static and global(extern)

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文件中对此变量赋初值,此时连接不会出错。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值