① 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; }
结果为:
出错!