注册 登录
编程论坛 C++教室

全局变量功能是否与static局部变量有相似之处?

fu82740731 发布于 2012-07-01 19:41, 335 次点击
static局部变量只赋初值一次,以后每次调用函数时,不在重新赋初值而是只保留上次函数调用结束时的值。

全局变量是否也有这样的功能?

请大家帮忙解答下?
6 回复
#2
一只小蚂蚁2012-07-01 23:18
一样的 static减少全局名字空间 所以多用static
#3
lxqlyld2012-07-03 13:49
有相似的功能,但静态数据成员比全局变量有两个优势:1、静态数据成员没有进入程序的全局空间,所以不存在与程序中其他全局名字冲突的可能性;2、静态数据成员可以实现信息隐藏,可以为private成员,而全局对象不能
#4
jiantiewen2012-07-04 02:43
三楼的搞错了,人家问的不是类中的成员。。。在同一个源文件的代码中全局变量与静态局部变量可以说是没有区别,都是在内存中分配得固定的内存位置。至于二楼说的减小全局命名空间,我实在难以想象究竟怎样的程序会对全局命名空间有这样的要求,望二楼具体指点。
#5
一只小蚂蚁2012-07-04 13:21
我好久没写过C程序了 我现在用的static最多的就是类里静态成员变量和静态成员方法 static有个地方要注意 静态变量后4个地址是个标志
#6
jiantiewen2012-07-04 19:25
回复 5楼 一只小蚂蚁
我不理解这句:静态变量后4个地址是标志。
#7
一只小蚂蚁2012-07-04 22:24
静态成员实现方法就需要标志 不然一个函数内定义个静态变量 执行2次这个函数 难道会定义两次 显然不会
实现方法看这标志是否有置1位 如果有则不会继续定义第二次 所以你可以写个函数测试下 调用两次 第一次之后修改内存 把变量地址后4字节改为0
第二次调用则会重新定义静态变量
1