在C语言中static有什么含义
发布网友
发布时间:2022-04-23 03:43
我来回答
共5个回答
热心网友
时间:2023-05-26 22:21
是不止一个意思,要看用到哪里。比如:
static int a;
int b;
void func(void)
{
static int c;
int d;
}
在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。
c和d的区别是,d是一个自动变量,func函数执行完后,d会自动被释放。但c却不会被释放,下一次调用func函数时,c的值会保留上次的值继续使用。
热心网友
时间:2023-05-26 22:22
最主要有两点用途。
让一个变量长期有效,而不管其是在什么地方被申明。比如:
int fun1()
{
static int s_value = 0;
....
}
那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。
2.避免多个文件使用了相同的变量名而导致冲突
比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了。
热心网友
时间:2023-05-26 22:22
“是不止一个意思,要看用到哪里。比如: static int a; int b; void func(void) { static int c; int d; } 在这里,a与b都是全局变量,二者的区别是,b可以被别的文件使用,a只能在本文件中使用,这是static对全局变量的作用。 c...”
热心网友
时间:2023-05-26 22:23
就一个意思.static修饰的变量是静态变量,在整个程序的执行时间里面,该变量只初使化一次,直至程序退出执行。
热心网友
时间:2023-05-26 22:23
静态变量,没什么其他意思,就是声明一次后,出函数该变量不会被释放掉