static means two thing:
a) storage: in the static area!
b) link-form: link in file, either for value or function!
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
1.static
a.in one function, can only be initialized for just one time!!!!
b.static value or static function can only be seen in the model(for example, the .cpp file), so it can be called "local-global", which isdifferent from global value or function!
2.
global value:
C程序可以由多个源文件组成。一个文件中定义全局变量,其他的文件中可以使用extern方式声明后,使用该全局变量。如果希望当前文件中的全局变量不能被其他文件使用,可以在全局变量的定义前加上关键字static,这样该全局变量就是一个static全局变量。全局变量在静态区分配内存。
3.static function
static函数与普通区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
PS:from http://www.blogjava.net/fhtdy2004/archive/2009/05/29/278958.html:
如何引用一个已经定义过的全局变量?
答:extern
可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间 会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
答:可以,在不同的C文件中以static形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。