局部變量的存儲類別:自動變量和靜態變量

① 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;
}

結果爲:


出錯!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章