1.基本概念
- 聲明(declaration):使得名字為程序所知逗扒, 一個(gè)文件如果想使用別處定義的名字則必須包含對那個(gè)名字的聲明。
- 定義(definition)負(fù)責(zé)創(chuàng)建與名字關(guān)聯(lián)的實(shí)體烤宙。
2.功能
- 變量聲明規(guī)定了變量的類型和名字箭昵, 在這一點(diǎn)上定義與之相同;
- 變量的定義除了聲明變量的類型和名字,還申請變量的存儲(chǔ)空間,也可能會(huì)為變量賦一個(gè)初始值;
如果想聲明一個(gè)變量而非定義它愈污, 就在變量名前添加關(guān)鍵字extern, 而且不要顯式地初始化變量:
extern int i; //聲明l. 而非定義i
int j; //聲明并定義
任何包含了顯式初始化的聲明即成為定義怠惶。我們能給由ex七ern關(guān)鍵字標(biāo)記的變量賦一個(gè)初始值涨缚, 但是這么做也就抵消了extern的作用。extern語句如果包含初始值就不再是聲明策治, 而變成定義了:
extern double pi = 3.1416; //定義
在函數(shù)體內(nèi)部脓魏, 如果試圖初始化一個(gè)由extern關(guān)鍵字標(biāo)記的變量,將引發(fā)錯(cuò)誤通惫。因?yàn)樵诤瘮?shù)體的外面已經(jīng)進(jìn)行了定義
NOTE:文量能且只能被定義一次茂翔, 但是可以被多次聲明。