静态变量与非静态变量的区别
1、存储位置不同
静态变量:存储在全局数据区(静态数据区)。
非静态变量叫动态变量:存储在内存出栈数据区。
2、生命期不同
动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。
静态变量:程序结束时才释放。
3、作用域不同
动态变量:同样的要根据你定义的位置才能确定,和第二点的一样。
静态变量:当前文件中有效。
扩展资料;
静态变量的作用;
1、对于静态全局变量,源文件静态声明的文件级变量和函数的作用域仅限于文件(仅在文件中可见),即内部连接,因此可以用来限制变量的作用域。
2、对于静态局部变量,虽然函数内静态声明的变量范围与自动局部变量的范围相同(即范围仅在函数内),但存储空间是通过静态分配而不是默认的自动分配获得的。
所以存储空间在不同的区域是不同的(一般来说,静态分配时在编译时在程序数据段中划分存储空间,一次性分配在整个过程中是有效的。而在自动分配时,存储空间是在调用堆栈上分配的,只分配和释放在调用期间),两个调用之间的变量值总是一致的。必须注意,静态局部变量只能初始化一次,这是由编译器保证的。
3、对于静态成员变量,在C++中,类定义中静态声明的成员变量属于类变量,即它们在所有类实例中共享,相反是过程变量。
参考资料来源;百度百科——静态变量