12.1局部變量和全局變量
在函數(shù)內(nèi)部或復(fù)合語(yǔ)句內(nèi)部定義的變量稱為局部變量。函數(shù)的形參屬于局部變量。在函數(shù)外部定義的變量稱為全局變量。有時(shí),局部變量也稱為內(nèi)部變量,全局變量也稱為外部變量。
12.2變量的存儲(chǔ)屬性(自動(dòng)、靜態(tài)、寄存器、外部),變量的作用域和生存期
C語(yǔ)言中來說明變量存儲(chǔ)屬性的關(guān)鍵字有四個(gè):auto(自動(dòng))、static(靜態(tài))、register(寄存器)、extern(外部)。
1.局部變量的存儲(chǔ)屬性
局部變量可以是自動(dòng)類別(用auto,register說明),也可以是靜態(tài)類別(用static說明)。形參只能是自動(dòng)存儲(chǔ)類別,不允許是static類別。
當(dāng)局部變量未指明類別時(shí),被自動(dòng)說明成自動(dòng)(auto)變量。這類局部變量稱為自動(dòng)變量。其值存放在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū),因此在退出作用域后,變量被自動(dòng)釋放,其值不予保留。
當(dāng)局部變量說明成寄存器(register)類型時(shí),與自動(dòng)(auto)變量一樣屬于自動(dòng)類別,所不同的是此時(shí)變量的值保留在CPU中的寄存器中。
當(dāng)變量說明成static(靜態(tài))類型時(shí),稱這樣的變量為靜態(tài)局部變量。在程序運(yùn)行期間,它占據(jù)一個(gè)永久的存儲(chǔ)單元,在函數(shù)退出后,變量的值仍舊保留。
2.全局變量的存儲(chǔ)屬性
全局變量都屬于靜態(tài)存儲(chǔ)類別,可以用extern和static對(duì)它們進(jìn)行說明。
當(dāng)一個(gè)文件中要引用另一文件中的全局變量或在全局變量定義前要引用它時(shí),可用extern說明。相當(dāng)于擴(kuò)大全局變量的作用域。
用static(靜態(tài))說明的全局變量稱為靜態(tài)全局變量,它僅能由本文件引用,即使在其文件中用extern說明也不能使用,它相當(dāng)于限制了全局變量作用域的擴(kuò)展。
12.3內(nèi)部函數(shù)和外部函數(shù)
1.在C語(yǔ)言中,所有的函數(shù)在本質(zhì)上都是外部函數(shù)。
2.函數(shù)定義時(shí)用extern進(jìn)行說明稱為外部函數(shù)。函數(shù)的隱含類別為外部函數(shù),外部函數(shù)可以被其他文件調(diào)用。
3.定義函數(shù)時(shí)用static進(jìn)行說明稱為靜態(tài)函數(shù),也稱內(nèi)部函數(shù)。靜態(tài)函數(shù)也是外部函數(shù),只是它僅局限于它所在的文件,其他文件不能調(diào)用。
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 | |
全國(guó)職稱計(jì)算機(jī)考試速成過關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |