c语言的变量存储方式
静态存储方式与动态存储方式(具体:自动的、静态的、寄存器的register、外部的extern)
在内存中的用户的存储空间分为:程序区、静态存储区、动态存储区。
静态存储方式:在程序运行期间,系统对变量分配的固定空间。
动态存储方式:在程序运行期间,系统对变量分配的动态空间
1>用static来声明静态局部变量,局部变量的值在函数结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保留上次函数调用结束时的值。静态局部变量的默认值为0.
2>动态的局部变量当函数体被调用完毕时,变量的空间被释放。
举例:
#include<stdio.h>
int main()
{
int i=0;
for(i=0;i<3;i++)
{
fun1();
fun2();
}
}
//自动变量
void fun1()
{
int a=10;
a++;
printf("输出自动变量a的值:%d\n",a);
}
//局部静态变量
void fun2()
{
static int a=3
a++;
printf("输出静态局部变量a的值:%d\n",a);
}
输出结果:
![]()
![]()
说明:静态局部变量是只有在编译的时候赋初始值,即只赋初始值一次,在程序运行的时候它已经有初始值,那么之后再调用函数的时候不在重新对变量进行初始值赋值,而是对保留上一下车函数调用结束的值。