**
C语言局部变量的存储类别
**
自动变量
auto int b,c=3;
auto可以省略,不写与
int b,c=3;等价
静态局部变量
下面展示例子 static
。
#include<stdio.h>
int main()
{
int f(int);
int a=2,i;
for(i=0;i<3;i++)
printf("%d\n",f(a));
return 0;
}
int f(int a)
{
int b=0;
static int c=3;
b = b+1;
c = c+1;
return(a+b+c);
}
结果为:
7
8
9
c是静态局部变量,函数调用结束后,他并不释放,保留其当前值。在第二次调用时即为4。b在一次函数调用后即释放,以后每次函数调用初值仍为0。
寄存器变量
register
register int c;
注意:
3种局部变量的存储位置是不同的:自动变量存储在动态存储区;静态局部变量存储在静态存储区;寄存器存储在cpu中的寄存器中。