发布网友 发布时间:2022-04-23 03:43
共5个回答
热心网友 时间:2023-09-18 22:16
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修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
热心网友 时间:2023-09-18 22:16
static变量与普通变量的区别就在于此热心网友 时间:2023-09-18 22:17
如果是赋值初始值,那么在程序运行初始就已经初始化了。热心网友 时间:2023-09-18 22:17
呵呵,这就是静态变量的功能啊,静态变量只被初始化1次,所以不管几次调用,它都不会再执行int c=3这行啦。而c的值就是你之前运算的结果热心网友 时间:2023-09-18 22:18
static定义的变量只有第一次被赋值,这之后会自然使用之前留下来的值了,不会每次都按3初始化的。:-)