① auto(自动变量)
在调用函数时,系统会给这些变量分配储存空间,调用结束后就自动释放这些储存空间。
实际上,在定义自动变量时,关键字“auto”可以省略。不写“auto”则默认为“自动储存类别”。
② static(静态局部变量)
函数中的静态局部变量在函数调用结束后不消失且继续保留原值,占用的储存单元不释放。
eg:使用静态局部变量求分别输出n的一次方到n的n次方
#include <stdio.h>
int main()
{
int n,i;
int f(int);
printf("请输入n的值\n");
scanf("%d",&n);
printf("结果为:\n");
for(i=0;i<n;i++)
printf("%d的%d次方=%d\n",n,i+1,f(n));
return 0;
}
int f(int n)
{
static int a=1; //声明a为静态存储局部变量
a*=n;
return a;
}
而如果定义a时将static去掉(即定义为自动局部变量)
int f(int n)
{
int a=1;
a*=n;
return a;
}
结果为:
出错!