2.全局作用域
對(duì)于具有全局作用域的變量,我們可以在程序的任何位置訪問它們。當(dāng)一個(gè)變量是在所有函數(shù)的外部聲明,也就是在程序的開頭聲明,那么這個(gè)變量就是全局變量。
void add(int);
int num;
main()
{
int n=5;
add(n);
printf(%d\n,num); /*輸出6*/
}
void add(num) /*形式參數(shù)沒有指定類型*/
{
num++;
printf(%d\n,num); /*輸出6*/
}
上面的main()和add()里面,并沒有聲明num,但是在最后輸出的時(shí)候卻要求輸出num,這是由于在程序的開始聲明了num是全局變量,也就是在所有函數(shù)里都可以使用這個(gè)變量。這時(shí)候一個(gè)函數(shù)里改變了變量的值,其他函數(shù)里的值也會(huì)出現(xiàn)影響。上面的例子輸出都是6,因?yàn)樵赼dd()函數(shù)里改變了num的值,由于num是全局變量,就好象它們兩個(gè)函數(shù)共用一個(gè)變量,所以在main()函數(shù)里的num也隨之改變了。
3.文件作用域
在很多C語(yǔ)言書上,都沒有說明文件作用域,或者只是略微的提到,其實(shí)文件作用域在較大程序中很有作用(在多文件系統(tǒng)中)。文件作用域是指外部標(biāo)識(shí)符僅在聲明它的同一個(gè)轉(zhuǎn)換單元內(nèi)的函數(shù)匯總可見。所謂轉(zhuǎn)換單元是指定義這些變量和函數(shù)的源代碼文件(包括任何通過#include指令包含的源代碼文件)。static存儲(chǔ)類型修飾符指定了變量具有文件作用域。
static int num;
static void add(int);
main()
{
scanf(%d,&num);
add(num)
printf(%d\n,num);
}
void add(num)
{
num++;
}
上面的程序中變量num和函數(shù)add()在聲明是采用了static存儲(chǔ)類型修飾符,這使得它們具有文件作用域,僅愛定義它們的文件內(nèi)可見。
由于我們提到的大多數(shù)程序都只有一個(gè)編譯文件組成,所以這種寫法沒有實(shí)際意義。但是實(shí)際工程上的文件有很多,它們不是由一個(gè)人寫成的,由很多人共同完成,這些文件都是各自編譯的,這難免使得某些人使用了一樣的全局變量名,那么為了以后程序中各自的變量和函數(shù)不互相干擾,就可以使用static修飾符,這樣在連接到同一個(gè)程序的其他代碼文件而言就是不可見的。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言教程匯總計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言常見知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |