static int

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:28:40
#include<stdio.h>
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修饰的函数中的变量,只在函数被执行时占用内存,函数执行完毕后就被销毁,数据也就不存在了,所以每次都要声明,值也就不会变。