| 檔案範圍 |
| 函數範圍 |
| 區塊範圍 |
| 函數原型範圍 |
宣告在任何函數之外的識別字名稱都具有檔案範圍,如下例
#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 ,這是在區塊內的區域變數,並不會影響到區塊外的範圍。
效力範圍最窄的就是函數原型範圍,僅限於函數原型小括弧的參數列中。
沒有留言:
張貼留言