static局部变量:
1、改变了变量的存储方式(从栈区变成全局区),即改变了变量的生命周期。
2、static局部变量只初始化一次,没有显示初始化时默认为0,在某个函数中,下一次 的值依据上一次的值。
static全局变量
1、全局变量前面加上static,存储方式没有改变。
2、static全局变量改变了作用域,限制了使用范围,只能在定义了该变量的源文件有效, 在同一源程序的不同源文件中不能使用,即本地的全局变量。非静态全局变量在同一源程序的不同源文 件中都是有效的。
3、static全局变量只初始化一次,没有显示初始化时默认为0。
static函数
1、static函数限制了使用范围,只能在当前源文件中使用,相当于内部函数。c++类中, 为了避免不同类中相同名字函数的重定义错误,在函数前面加上static。
2、static函数在内存中只保存一份,普通函数在每个被调用中维持一份拷贝
注:引用一个已经定义过的全局变量:
1、引用头文件
将全局变量写错了,将会在编译的时候报错。
在不同的.c文件中以static形式声明同名的全局变量,在不同的.c文件中声明同名 全局变量时,只能有一个.c文件中对其赋值,否则链接出错。
2、extern关键字
将全局变量写错了,编译的时候不会报错,链接的时候会报错。