發信人: ax.bbs@bbs.ee.nthu.edu.tw.
(athena), 信區: test
標 題: 星星流講座 0037
發信站: ☆清華電機☆ (Fri Jul 7 14:43:19 1995)
轉信站: star
星星流講座 0037 C 語言教室
第 6 講 之 1 函數
Topic: Variables (1)
在進一步地討論函數之前,我們先來看看變數的分類法。
我們前面提到變數依定義範圍的不同,可以分為區域變數 (local variable)、
全域變數 (global variable) 以及外部變數 (external variable),這是變數
的第一種分類方法。
第二種分類方法就是依變數的「行為」(behavior) 來分類:靜態變數 (static
variable)、自動變數 (automatic variable) 以及暫存器變數 (register
variable)。我們現在就來研究這種分類的方法。
自動變數顧名思義就是自動產生與消滅的變數,什麼變數是自動產生與消滅的變
數呢?函數內的區域變數就是一種。函數內的區域變數在進入函數時自動地產生
,離開函數時自動地消滅,這就是標準的自動變數。
事實上,自動變數的定義是在程式區塊 (block) 內宣告的非靜態變數,當進入
區塊時該變數自動產生,離開區塊時該變數自動消滅。區塊和函數有什麼不同?
請看看下面的程式:
/* auto.c */
#include <stdio.h>
void main (void)
{ /* block 1 */
int i = 3;
int j = 0;
printf ("%d\n", i);
{ /* block 2 */
int j = 4;
printf ("%d %d\n", i, j);
}
printf ("%d %d\n", i, j);
}
執行結果:
3
3 4
3 0
我們前面定義過,用大括號 {} 括起來的程式碼就叫程式區塊。我們在區塊 2
中另外定義了一個整數 j,j 就是區塊 2 中的自動變數,它只活在定義它的區
塊之中,甚至於不屬於含括它的 main 函數,這與區域變數的定義不太一樣。
--
本文原作者為徐振家,原作刊載於星星神教總壇 ☆清華電機☆ test 板。
你可以以電子文件的形式將本文自由流傳於台灣學術網路,但必須包含此版權聲明。
原作者依中華民國著作權法之規定,享有本文之著作權,請勿抄襲以免觸法。
未經授權任何人不得以任何形式對本文做任何修改及商業上之應用。
其他網路的轉載或其他用途的應用,請先知會作者,並取得其同意。
對本文有任何疑問或意見請 mail 給 ax.bbs@bbs.ee.nthu.edu.tw,謝謝。