




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
變量的存儲(chǔ)類(lèi)別從變量的生存期來(lái)分,變量分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)兩種方式。C語(yǔ)言中變量的使用不僅對(duì)數(shù)據(jù)類(lèi)型有要求,而且還有存儲(chǔ)類(lèi)型的要求,變量的數(shù)據(jù)類(lèi)型是操作屬性,而變量的存儲(chǔ)類(lèi)型是存儲(chǔ)屬性,它表示變量在內(nèi)存中的存儲(chǔ)方法。C語(yǔ)言把用戶(hù)的存儲(chǔ)空間分成三部分:程序區(qū)、靜態(tài)存儲(chǔ)區(qū)、動(dòng)態(tài)存儲(chǔ)區(qū),如圖7-9所示。C語(yǔ)言把不同性質(zhì)的變量存放在不同的存儲(chǔ)區(qū)里。圖7-9變量存儲(chǔ)類(lèi)別在C語(yǔ)言中,每個(gè)變量和函數(shù)有兩個(gè)屬性:數(shù)據(jù)類(lèi)型和數(shù)據(jù)的存儲(chǔ)類(lèi)別。所謂變量的存儲(chǔ)類(lèi)別是指變量存放的位置。局部變量可以存放于內(nèi)存的動(dòng)態(tài)區(qū)、靜態(tài)區(qū)和CPU的寄存器里。在程序里,我們可以把變量對(duì)應(yīng)地定義為是自動(dòng)(auto)、靜態(tài)(static)、寄存器(register)等類(lèi)別。但無(wú)論變量存放在何處,它的作用域是不變的。全局變量存放在靜態(tài)存儲(chǔ)區(qū)里。靜態(tài)變量:這種類(lèi)別的變量在源程序運(yùn)行期間,從開(kāi)始到結(jié)束的整個(gè)過(guò)程一直占用固定存儲(chǔ)空間。動(dòng)態(tài)變量:這種類(lèi)別的變量當(dāng)進(jìn)入它的函數(shù)或復(fù)合語(yǔ)句時(shí)才分配存儲(chǔ)空間,一旦離開(kāi)它所在的函數(shù)或復(fù)合語(yǔ)句,就立即釋放所占的存儲(chǔ)空間。1.靜態(tài)變量在使用靜態(tài)變量時(shí),要注意下面三點(diǎn)。第一,在函數(shù)多次被調(diào)用的過(guò)程中,靜態(tài)局部變量只被初始化一次,并且其值具有可繼承性,即前一次調(diào)用產(chǎn)生的結(jié)果會(huì)保留并參與下一次調(diào)用的運(yùn)算中。第二,靜態(tài)變量的初始化是在編譯時(shí)進(jìn)行的,在定義時(shí)只能使用常量或常量表達(dá)式進(jìn)行顯示初始化,未初始化時(shí),編譯將它初始化為0(數(shù)值型)或空字符(字符型)。第三,靜態(tài)局部變量的值只能在定義它的函數(shù)體內(nèi)使用。【例7-6】分析以下程序的運(yùn)行結(jié)果,理解靜態(tài)變量的作用。參考源代碼為/*例7-6,7-6.c*/#include<stdio.h>voidmain(?){voidprint(?);inti=0;for(;i<10;i++)print(?);}voidprint(?){staticintst=-1;/*st為靜態(tài)變量*/st++;printf("s=%d",st);}運(yùn)行輸出:st=0st=1st=2st=3st=4st=5st=6st=7st=8st=9【思考驗(yàn)證】把此例中的靜態(tài)變量st,改為自動(dòng)變量,看結(jié)果又是什么?【融會(huì)貫通】在add函數(shù)中用靜態(tài)變量求(0,300)內(nèi)所有奇數(shù)之和,主函數(shù)已給出,請(qǐng)完成add函數(shù)。voidmain(?){inti=0;for(;i<150;i++)add(?);/*函數(shù)調(diào)用求奇數(shù)和*/}2.自動(dòng)變量(auto)自動(dòng)變量是C程序中使用最多的一種變量,因?yàn)樗膭?chuàng)建和撤銷(xiāo)都是由系統(tǒng)在程序執(zhí)行過(guò)程中自動(dòng)進(jìn)行的,所以稱(chēng)為自動(dòng)變量。自動(dòng)變量未初始化時(shí),它的值是不確定的。自動(dòng)變量的一般聲明格式為:[auto]數(shù)據(jù)類(lèi)型變量名[=變量|表達(dá)式]…auto是自動(dòng)變量存儲(chǔ)類(lèi)別的標(biāo)識(shí)符,如果省略了auto,系統(tǒng)默認(rèn)此變量為自動(dòng)變量。例如,以下變量都是局部自動(dòng)變量:voidfun(?){intvar1=0;autocharstr[3];…}局部自動(dòng)變量是在函數(shù)被執(zhí)行時(shí)系統(tǒng)才為它分配存儲(chǔ)空間,當(dāng)函數(shù)執(zhí)行完以后,此空間就被釋放;在同一函數(shù)的多次調(diào)用中,自動(dòng)變量的值是不保留的;即使在不同的函數(shù)中甚至是在同一個(gè)函數(shù)的不同語(yǔ)句塊中定義了同名的自動(dòng)變量,系統(tǒng)也會(huì)視它們?yōu)椴煌淖兞俊?.寄存器變量(register)寄存器變量與自動(dòng)變量有相同的性質(zhì),通常把使用頻率較高的變量定義為寄存器變量。寄存器變量存儲(chǔ)在CPU的寄存器中,所以存取速度最快。定義寄存器變量的格式為register數(shù)據(jù)類(lèi)型變量名[=變量|表達(dá)式]…TurboC中寄存器變量只能用于整型和字符型,并且只適用于自動(dòng)變量和函數(shù)的形參。用關(guān)鍵字register聲明的局部變量說(shuō)明:寄存器變量只能用于基本整型、短整型和字符型變量。寄存器變量的分配方式是動(dòng)態(tài)分配的由于CPU中寄存器數(shù)目有限,通常只把少數(shù)使用頻繁的變量定義為寄存器變量。對(duì)超出寄存器數(shù)目的寄存器變量按自動(dòng)變量處理。只有自動(dòng)變量和形參可以作為寄存器變量。4.外部變量外部變量是指在函數(shù)外定義的變量,也稱(chēng)為全局變量。其作用域從變量的定義處開(kāi)始,直到本程序文件的結(jié)束。外部變量的定義通常放在程序首部。外部變量的定義只有一次,定義時(shí)可對(duì)外部變量分配存儲(chǔ)單元及初始化。當(dāng)在一個(gè)文件中要引用另一個(gè)文件中的全局變量,或在本文件中在全局變量的定義之前要引用它時(shí),可用extern作聲明。外部變量的聲明可以有多次,聲明位置在定義之前任意處,不分配存儲(chǔ)空間。外部變量:是指在函數(shù)外定義的變量,也稱(chēng)為全局變量。其作用域從變量的定義處開(kāi)始,直到本程序文件的結(jié)束。外部變量的定義通常放在程序首部。外部變量的一般定義格式為extern數(shù)據(jù)類(lèi)型變量名[=變量|表達(dá)式]…外部變量的定義只有一次,定義時(shí)可對(duì)外部變量分配存儲(chǔ)單元及初始化。當(dāng)在一個(gè)文件中要引用另一個(gè)文件中的全局變量,或在本文件中在全局變量的定義之前要引用它時(shí),可用extern作聲明。外部變量的聲明可以有多次,聲明位置在定義之前任意處,不分配存儲(chǔ)空間。在同一個(gè)源程序文件中intmax(inta,intb)
{intc;
c=a>b?a:b;
returnc;}voidmain(){externintx,y;//外部變量聲明,不重新開(kāi)辟內(nèi)存空間printf(“%d\n”,max(x,y));}intx=12,y=-8;//外部變量定義
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 自愿咨詢(xún)檢測(cè)管理辦法
- 成本估算項(xiàng)目管理辦法
- 壽險(xiǎn)從業(yè)出勤管理辦法
- 肺功能護(hù)理課件
- 育嬰員初級(jí)職業(yè)道德課件
- 氯堿電解工藝培訓(xùn)課件
- 肩周炎中醫(yī)課件
- 肥皂泡泡課件介紹
- 2025年防殺病毒軟件項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 手衛(wèi)生培訓(xùn)課件
- 2025年河北廊坊市直事業(yè)單位招聘工作人員256人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025年醫(yī)學(xué)綜合素質(zhì)考試題及答案
- 電大市場(chǎng)營(yíng)銷(xiāo)試題及答案
- 送達(dá)地址確認(rèn)書(shū)(法院最新版)
- 會(huì)計(jì)師事務(wù)所工程財(cái)務(wù)決算審核報(bào)告
- 上海小學(xué)語(yǔ)文四年級(jí)上冊(cè)詞語(yǔ)表(共3頁(yè))
- 超聲回彈綜合法計(jì)算表(帶公式)
- 土(宕渣)的綜合毛體積密度試驗(yàn)自動(dòng)計(jì)算用表
- 甘油丙三醇MSDS
- 青島一模化學(xué)試題
- 常德市自來(lái)水公司水表管理制度
評(píng)論
0/150
提交評(píng)論