优点:静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突。 (1)全局变量和全局静态变量的区别 1)全局变量是不显式用 static 修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用全局变量。 2)全局静态
1. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: •该变量在全局数据区分配内存; •静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; •静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; •它始终驻留在全局数据区,直到程...
5、常量区,是编译器生成的一个exe区段,只有可读属性,比如char s = " hello world" ,这时候" hello world" 就在常量区,由于没有可写属性,所以修改内容会出错,另外全局的const变量也放在常量区里,这和c++程序设计语言里对const变量存放位置是不符合的,因为存储器各有各的差异。 局部变量,局部静态变量,全局变量...
1>全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 2>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都...
通常在函数体内定义的局部变量,当程序运行到该语句时会给该局部变量分配栈内存。但随着程序退出函数体,系统就会收回栈内存,局部变量也相应失效。 在局部变量前加上关键字"static",就被定义成为一个静态局部变量。静态局部变量保存在全局数据区,而不是保存在栈中,每次的值保持到下一次调用,直到下次赋新值。
在上述的代码中,程序运行的结果就是1、2、3,i是静态局部变量,如果将程序中static去掉,程序运行的结果就是1、1、1,因为此时的i是局部变量。如果将int i = 0;放到函数外面会实现与静态布局变量相同的效果。一旦在主程序中改变i的值,打印的结果就会变化。如果是静态局部变量,改变i的值,会报错,因为i的作用域是...
静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。 局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次...
虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是不可见的。经典案例:C++实现输出静态局部变量。源码分析:#include<iostream>//头文件 using namespace std;//命名空间 int Fun(int num1)//自定义Fun函数 { auto int num2=0;//定义自动变量且赋初值 static...
在调用main之前,内存先从FASH copy 数据(全局/静态变量),和复制全0段的(全局/静态变量) 全局变量和静态变量从0x2000,000开始存。 2,局部变量和局部静态变量 局部静态变量分配的内存也是在静态存储内存上的,其第一次初始化后就一直存在直到程序结束(只初始化一次),该变量的特点是其作用域只在定义它的函数内可见...
静态局部数据 Static 用于在背景数据块中存储静态中间结果的变量,静态数据会一直保留到被覆盖,这可能在 几个周期之后。在此代码块中作为多重实例调用的块名称,也将存储在静态局部数据中。 以下是个人理解: 该…