您的位置首页生活小窍门

static int

问题补充说明:#include int & f() { static int i=2; return ++i; } int g() { int j=2; return ++j; } void main() { int &ri=f(); int rj=g(); f(); rj=g(); printf("ri=%d,rj=%d",ri,rj); } 输出:ri=4,rj=3 而去掉“static int i=2”中的static 其输出结果是 ri=3,rj=3 为什么??

因为static变量也就是静态变量,在程比故粒销吧序运行过程中被声明后就会一直保存在内存里,失结这数所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。

没有static修饰的函数中的变量,只在函数被执来自行时占用内存,函数执行完毕后就被销毁,数据也就不存在了,所以每次都要声明,值也就不会变。

static int

staticintn;//定义静态全局变量

改为

intn;//定义全局变量

再次编译运行程序,细心体360问答会全局变量和静态全局变量的区别。

注意:全局变量和全局静态变量的区别

全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的不世品标案远报句能罪创全局变量,在另一个文件中,通过extern全局变量名的声明,就可以使用全局变量。

以上内容参考:百度百科-static