C语言中static变量的赋值问题

2024-10-28 20:22:00
推荐回答(5个)
回答1:

static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作如下:

printf(“%d”,a);

a++;

}

int main()

{

staticLocalVar(); // 第一次调用, 输出a=0

staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1

return 0;

}

扩展资料

1、static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互慎拿相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。

2、static对栈变量的修饰,可以认雹孝禅为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束。

3、源尘但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。

回答2:

static变量与普通变量的区别就在于此

每次调用fun()函数,
函数开始时,初始化普通变量、分配内存,函数结束后,嫌中普通变量所占芹蔽山用的内存就被释放
而对于static变量,只是第一次调用时会初始化,函数体结束之后,static变量占并毁用的内存会被保留,从而变量的值不会发生变化,下次调用该函数,也不会重新初始化,而是保留上次的值

回答3:

如果是赋值初始值,那么在程序运行初始仿答纤就已经初始化了。
和备仿全局变量是一样的。
但体现出来作用是在第一次调用。
至于后续赋值,随便什么时候都可以
想赋值的时候举掘就赋值咯。

回答4:

呵呵,这蚂睁就是静态变量物租的功能啊,静态变量只被闷蚂岁初始化1次,所以不管几次调用,它都不会再执行int c=3这行啦。而c的值就是你之前运算的结果

回答5:

static定义的变量只有第一次被赋值,这之后会自然使用之前基宽留下来的值了尘迹,不会每次都按3初始化派锋并的。:-)