檔案範圍 |
函數範圍 |
區塊範圍 |
函數原型範圍 |
宣告在任何函數之外的識別字名稱都具有檔案範圍,如下例
#include <stdio.h> void other(void); int i = 0; int main(void) { printf("in main, i = %d\n", i++); other(); printf("in main, i = %d\n", i++); other(); printf("in main, i = %d\n", i++); return 0; } void other(void) { printf("in other, i = %d\n", i++); } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:filescope.c 功能:示範具檔案範圍的變數 作者:張凱慶 時間:西元2010年4月 */
編譯後執行,如下
檔案範圍的意思是說整個檔案的任何函數均可使用,這樣使具有檔案範圍的識別字名稱形成全域變數的效果。
具有函數範圍的識別字只有標籤,形如
lable:
識別字加上冒號,包括 switch 及 goto 所用的標籤,標籤可以在函數的任何位置使用,一旦超出函數的範圍,就無法利用函數內的標籤。
所謂的區塊範圍是指用大括弧 {} 圍起來的區域,如下例
#include <stdio.h> int main(void) { int i = 0; printf("i = %d\n", i++); { printf("in block, i = %d\n", i++); int i = 99; printf("in block, i = %d\n", i++); } printf("i = %d\n", i++); return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:blockscope.c 功能:示範具有區塊範圍的變數 作者:張凱慶 時間:西元2010年4月 */
編譯後執行,如下
第 10 行在區塊內重新宣告變數 i ,這是在區塊內的區域變數,並不會影響到區塊外的範圍。
效力範圍最窄的就是函數原型範圍,僅限於函數原型小括弧的參數列中。
沒有留言:
張貼留言