黑马程序员技术交流社区

标题: C语言中static关键字的作用 [打印本页]

作者: 阳光地带    时间: 2014-7-21 02:28
标题: C语言中static关键字的作用
1.保持局部变量的持久。
函数内的局部变量,在函数退出后消失,但静态局部变量虽然在函数内定义,但是始终存在。

2.会默认将变量初始化为0.

static还有其他作用吗?

作者: 火拳    时间: 2014-7-21 09:39
static 表示内部的意思,extern表示外部的,跟java中不一样,这要区分,static修饰的变量只能被内部访问,同一个变量被static和extern修饰,他们的作用域是一样的,但是生命周期不一样,这个很重要
作者: 阳光地带    时间: 2014-7-21 13:23
火拳 发表于 2014-7-21 09:39
static 表示内部的意思,extern表示外部的,跟java中不一样,这要区分,static修饰的变量只能被内部访问, ...

内部的意思是同一个文件内吗?static变量的生命周期是一直到程序结束,extern变量呢?
作者: 天蚕飞    时间: 2014-7-21 14:06
1>在函数体内,一个被申明为静态的变量,那么在这个函数的被调用过程中其值只有在第一次定义被申明,以后调用的话,申明会被忽略,所以也就不会因为函数被多次调用,而新的static变量覆盖旧的static变量;而且static修饰的变量的作用域不想其局部变量一样,在函数退出后被系统释放,而是等到整个程序执行完成,退出main函数后才会释放。所以在函数内定义的static变量在整个被调用过程当中,可以保持变量值维持不变。
2>在函数模块内(但在函数体外),一个被申明为static的变量。该变量就可以在整个模块内被模块内的所有函数方法调用。可以理解为一个本地全局变量。
3>在一个模块内,将一个函数声明为static后,那么这个函数就只能在这个模块内被任意调用。类似于我们OC当中的私有函数,有利于功能的封装。了解过Linux设备驱动开发的话,你会发现这种用有多常见。


就知道这么点。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2