一、c语言中什么是静态局部变量
static用修饰符来声明的变量叫静态变量。
这种变量和一般的变量不同。从程序开始到程序结束一直存在。
局部静态变量。是在函数内部声明的静态变量。
局部静态变量的值有一个特性,它会保存你操作的结果。
举个例子:
int test(int a)
{
static int sum= 5;
sum+= a;
return sum;
}
当你第一次调用时 static int sum= 5;起作用
int a1= test(2);// a1= 7同时 sum= 7
当你第二次调用时 static int sum= 5;不起作用 sum= 7
int a2= test(2);// a2= 9 sum= 9
这是因为用static声明的变量分配的地址不是在栈中。在完成第一次调用后,它仍然存在,并且有个值。第二次调用时,并不会再重新生成一个变量,还会使用上一次函数完成时的值。
二、C语言动态变量和静态变量的区别
一、形式不同:
静态变量是在定义的时候,有static修饰的变量,形式为static TYPE var_name= init_value;
动态变量,形式为TYPE var_name= init_value;即没有static修饰,其中的=init_value均可省略。
二、作用不同:
动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
常量使用
静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。
编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。
以上内容参考:百度百科-静态变量
三、C语言中的静态局部变量的定义
简单跟你说说吧,静态变量是放静态区的,程序结束后OS会自动回收内存的,不用你操心。而局部变量不用我说了吧,简单理解成:在大括号中的都是局部变量,放栈区,static是静态变量的标示符。{
static int a=0,b=2;
static int sum=0,i;
};
这里的a,b,sum,i都是静态局部变量。如果你不写static的话,就是动态局部变量(默认就是动态的),或者你写auto也是动态局部变量。执行到大括号末尾的时候,这几个变量会从内存中消失的。
如果你不是写在大括号中,而是写在外面的,就是全局变量,加上static就是私有的全局变量。
其实你这个问题问得挺幼稚的。。。。
满意请采纳,谢谢
四、C语言中静态变量与动态变量的定义与区别
动态变量和静态变量定义和区别如下:
1、定义上,静态变量比动态变量多一个关键字static,比如:
动态变量:int i;
静态变量:static int i;
2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:
main()
{
int i;
for(i=0;i<5;i++)fun();//fun1();
}
void fun()//输出结果为11111
{
int j;
j++;
printf("%d",j);
}
void fun1()//输出结果为12345
{
static int j;
j++;
printf("%d",j);
}
好了,文章到此结束,希望可以帮助到大家。