① 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;
}
結果爲:
出錯!