静态(s_)、成员(m_)、全局(g_)变量在c++中有什么含义、作用?

如题所述

第1个回答  2014-01-17
全局变量数据存储在全局数据区,程序结束的时候才会释放内存,但唯一的缺点是定义必须在所有函数定义之前,平时写程序尽量避免使用全局变量
成员变量也称局部变量,存储在堆栈数据区
静态变量存储在静态全局数据区,也是在程序结束的时候才会释放内存,利用静态变量可以方便的实现跨文件的数据共享
第2个回答  2014-01-17
静态变量之所以是因为静态,是因为他在整个程序生命周期的地址静止不变。也就是说在整个程序里面只保存有一份拷贝。static关键字允许它在不同的函数调用间保持它的值。如果一个静态变量被访问后值改变,它就会保持新的值。如果这变量再次被访问,它将会维持最新的值。
成员变量不是实例对象的一部分,它是所有对象共有的,它必须在类的内部申明,在类的外部定义。
全局变量是使用相同的内存块在整个类中存储一个值.全局变量的存在主要有以下一些原因:
  1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
  2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少。
  3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。
  总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。本回答被网友采纳
第3个回答  2014-01-17
静态变量定义后,所有对象的这个变量都分配同一个地址,改变一个对象的这个变量会影响其他对象的一个变量。
成员变量,在每创建一个对象时都会分配一个不同的地址空间,改变其中一个对象的这个变量,并不会影响其他成员的这个变量。成员变量的作用域,也就是有效范围是整个类。
全局变量是说明语句不在任何一个类定义、函数定义或复合语句(程序块)中的变量。全局变量所占用的空间在内存的数据区,在程序运行的整个过程中位置保持不变。
相似回答