C語言中變量和函數(shù)的聲明與定義.docx
《C語言中變量和函數(shù)的聲明與定義.docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言中變量和函數(shù)的聲明與定義.docx(7頁珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、變量在將變量前,先解釋一下聲明和定義這兩個(gè)概念。聲明一個(gè)變量意味著 向編譯器描述變量的類型,但并不為變量分配存儲(chǔ)空間。定義一個(gè)變量意味著 在聲明變量的同時(shí)還要為變量分配存儲(chǔ)空間。在定義一個(gè)變量的同時(shí)還可以對(duì) 變量進(jìn)行初始化。局部變量通常只定義不聲明,而全局變量多在源文件中定義,在頭文件中聲 明。局部變量在一個(gè)函數(shù)的內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有 效。自動(dòng)變量auto函數(shù)中的局部變量,其缺省格式是自動(dòng)變量類型。例如,在函數(shù)體中intb, c=3;和 auto int b, c=3;是等價(jià)的。自動(dòng)變量是動(dòng)態(tài)分配存儲(chǔ)空間的,函數(shù)結(jié)束后就釋放。自動(dòng)變量如不賦初 值,則它的值是一個(gè)不確定
2、的值。靜態(tài)局部變量static靜態(tài)局部變量是指在函數(shù)體內(nèi)聲明和定義的局部變量,它 僅供本函數(shù)使用,即其他函數(shù)不能調(diào)用它。靜態(tài)局部變量的值在函數(shù)調(diào)用結(jié)束 后不消失而保留原值,即其占用的存儲(chǔ)單元不釋放,在下一次函數(shù)調(diào)用時(shí),該 變量已有值,就是上一次函數(shù)調(diào)用結(jié)束時(shí)的值。靜態(tài)局部變量在靜態(tài)存儲(chǔ)區(qū)分 配存儲(chǔ)單元,在程序的整個(gè)運(yùn)行期間都不釋放。靜態(tài)局部變量是在編譯時(shí)賦初 值的,即只賦初值一次。在SDT編譯器中,建議對(duì)靜態(tài)局部變量賦初值,否則該靜態(tài)局部變量的初值為 不確定值。在其他編譯器中,未初始化的靜態(tài)局部變量的初值可能為零,這由 具體的編譯器所決定,使用前最好測(cè)試一下。寄存器變量register帶reg
3、ister修飾符的變量暗示(僅僅是暗示而不是命令)編譯程序本變量將被頻繁使用,如果可能的話,應(yīng)將其保留在CPU勺寄存器中,以加快其存取速度。對(duì)于現(xiàn)有的大多數(shù)編譯程序,最好不要使用register修飾符。因?yàn)樗菍?duì)早期低效的C編譯程序的一個(gè)很有價(jià)值的補(bǔ)充。隨著編譯程序技術(shù)的進(jìn) 步,在決定哪些變量應(yīng)當(dāng)被存到寄存器中時(shí),現(xiàn)在的C編譯程序能比程序員做 出更好的決定。全局變量在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量,它可以為本文 件中其他函數(shù)所共用。全局變量都是靜態(tài)存儲(chǔ)方式,都是在編譯時(shí)分配內(nèi)存, 但是作用范圍有所不同。靜態(tài)外部變量static靜態(tài)外部變量只能在本文件中使用。所以靜態(tài)外部變量
4、應(yīng)該在當(dāng)前源文件中聲 明和定義。外部變量extern定義函數(shù)中的全局變量時(shí),其缺省格式是外部變量類型。外部 變量應(yīng)該在一個(gè)頭文件中聲明,在當(dāng)前源文件中定義。外部變量允許其他文件 引用。下例聲明了一個(gè)變量和一個(gè)結(jié)構(gòu),定義了兩個(gè)變量,其中一個(gè)定義帶初始化:extern int decll; / this is a declarationstruct decl2int member;);/ this just declares the type-no variablementionedintdef1 = 8;11 this is a definitionintdef2; / this is a de
5、finition函數(shù)內(nèi)部函數(shù)的聲明和定義多在當(dāng)前源文件中完成;而外部函數(shù)通常在源文件中定 義,在頭文件中聲明。內(nèi)部函數(shù)只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說明為內(nèi)部函數(shù)。內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中聲明和定義。若內(nèi)部函數(shù)在頭文件中聲明,其他源文件通過 包含這個(gè)頭文件也可使用這個(gè)函數(shù),但這樣就失去了其做為內(nèi)部函數(shù)的意義。優(yōu)點(diǎn):使用內(nèi)部函數(shù),可以使函數(shù)只局限于所在文件。這避免了與其他源文件中可能出現(xiàn)的同名函數(shù)發(fā)生沖突。例:File : function 1.cinclude “ function 1.h static int stat_func(void);void MasterFunction(void
6、)(re = stat_func();static int stat_func(void)return rc;外部函數(shù)對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中聲明。其他源文 件可通過包含這個(gè)頭文件或進(jìn)行聲明來使用這些函數(shù)(推薦用前者)O 一個(gè)良好的編程習(xí)慣是在頭文件中聲明函數(shù)的原型。這可方便編譯程序查錯(cuò)。 定義函數(shù)時(shí),缺省的函數(shù)類型是外部函數(shù)。如口: void fun2(void);和extern voidfun2(void);其函數(shù)類型是等價(jià)的,但前一個(gè)是定義函數(shù),后一個(gè)是聲明函 數(shù)。小結(jié)編寫程序,尤其是大型程序時(shí),建議采用上文所述的方法對(duì)不同的變量、 函數(shù)進(jìn)行必要的聲明、定義。
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
12 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言 變量 函數(shù) 聲明 定義