




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
變量的存儲類別從變量的生存期來分,變量分為靜態(tài)存儲和動態(tài)存儲兩種方式。C語言中變量的使用不僅對數(shù)據(jù)類型有要求,而且還有存儲類型的要求,變量的數(shù)據(jù)類型是操作屬性,而變量的存儲類型是存儲屬性,它表示變量在內(nèi)存中的存儲方法。C語言把用戶的存儲空間分成三部分:程序區(qū)、靜態(tài)存儲區(qū)、動態(tài)存儲區(qū),如圖7-9所示。C語言把不同性質(zhì)的變量存放在不同的存儲區(qū)里。圖7-9變量存儲類別在C語言中,每個變量和函數(shù)有兩個屬性:數(shù)據(jù)類型和數(shù)據(jù)的存儲類別。所謂變量的存儲類別是指變量存放的位置。局部變量可以存放于內(nèi)存的動態(tài)區(qū)、靜態(tài)區(qū)和CPU的寄存器里。在程序里,我們可以把變量對應(yīng)地定義為是自動(auto)、靜態(tài)(static)、寄存器(register)等類別。但無論變量存放在何處,它的作用域是不變的。全局變量存放在靜態(tài)存儲區(qū)里。靜態(tài)變量:這種類別的變量在源程序運行期間,從開始到結(jié)束的整個過程一直占用固定存儲空間。動態(tài)變量:這種類別的變量當(dāng)進(jìn)入它的函數(shù)或復(fù)合語句時才分配存儲空間,一旦離開它所在的函數(shù)或復(fù)合語句,就立即釋放所占的存儲空間。1.靜態(tài)變量在使用靜態(tài)變量時,要注意下面三點。第一,在函數(shù)多次被調(diào)用的過程中,靜態(tài)局部變量只被初始化一次,并且其值具有可繼承性,即前一次調(diào)用產(chǎn)生的結(jié)果會保留并參與下一次調(diào)用的運算中。第二,靜態(tài)變量的初始化是在編譯時進(jìn)行的,在定義時只能使用常量或常量表達(dá)式進(jìn)行顯示初始化,未初始化時,編譯將它初始化為0(數(shù)值型)或空字符(字符型)。第三,靜態(tài)局部變量的值只能在定義它的函數(shù)體內(nèi)使用。【例7-6】分析以下程序的運行結(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);}運行輸出:st=0st=1st=2st=3st=4st=5st=6st=7st=8st=9【思考驗證】把此例中的靜態(tài)變量st,改為自動變量,看結(jié)果又是什么?【融會貫通】在add函數(shù)中用靜態(tài)變量求(0,300)內(nèi)所有奇數(shù)之和,主函數(shù)已給出,請完成add函數(shù)。voidmain(?){inti=0;for(;i<150;i++)add(?);/*函數(shù)調(diào)用求奇數(shù)和*/}2.自動變量(auto)自動變量是C程序中使用最多的一種變量,因為它的創(chuàng)建和撤銷都是由系統(tǒng)在程序執(zhí)行過程中自動進(jìn)行的,所以稱為自動變量。自動變量未初始化時,它的值是不確定的。自動變量的一般聲明格式為:[auto]數(shù)據(jù)類型變量名[=變量|表達(dá)式]…auto是自動變量存儲類別的標(biāo)識符,如果省略了auto,系統(tǒng)默認(rèn)此變量為自動變量。例如,以下變量都是局部自動變量:voidfun(?){intvar1=0;autocharstr[3];…}局部自動變量是在函數(shù)被執(zhí)行時系統(tǒng)才為它分配存儲空間,當(dāng)函數(shù)執(zhí)行完以后,此空間就被釋放;在同一函數(shù)的多次調(diào)用中,自動變量的值是不保留的;即使在不同的函數(shù)中甚至是在同一個函數(shù)的不同語句塊中定義了同名的自動變量,系統(tǒng)也會視它們?yōu)椴煌淖兞俊?.寄存器變量(register)寄存器變量與自動變量有相同的性質(zhì),通常把使用頻率較高的變量定義為寄存器變量。寄存器變量存儲在CPU的寄存器中,所以存取速度最快。定義寄存器變量的格式為register數(shù)據(jù)類型變量名[=變量|表達(dá)式]…TurboC中寄存器變量只能用于整型和字符型,并且只適用于自動變量和函數(shù)的形參。用關(guān)鍵字register聲明的局部變量說明:寄存器變量只能用于基本整型、短整型和字符型變量。寄存器變量的分配方式是動態(tài)分配的由于CPU中寄存器數(shù)目有限,通常只把少數(shù)使用頻繁的變量定義為寄存器變量。對超出寄存器數(shù)目的寄存器變量按自動變量處理。只有自動變量和形參可以作為寄存器變量。4.外部變量外部變量是指在函數(shù)外定義的變量,也稱為全局變量。其作用域從變量的定義處開始,直到本程序文件的結(jié)束。外部變量的定義通常放在程序首部。外部變量的定義只有一次,定義時可對外部變量分配存儲單元及初始化。當(dāng)在一個文件中要引用另一個文件中的全局變量,或在本文件中在全局變量的定義之前要引用它時,可用extern作聲明。外部變量的聲明可以有多次,聲明位置在定義之前任意處,不分配存儲空間。外部變量:是指在函數(shù)外定義的變量,也稱為全局變量。其作用域從變量的定義處開始,直到本程序文件的結(jié)束。外部變量的定義通常放在程序首部。外部變量的一般定義格式為extern數(shù)據(jù)類型變量名[=變量|表達(dá)式]…外部變量的定義只有一次,定義時可對外部變量分配存儲單元及初始化。當(dāng)在一個文件中要引用另一個文件中的全局變量,或在本文件中在全局變量的定義之前要引用它時,可用extern作聲明。外部變量的聲明可以有多次,聲明位置在定義之前任意處,不分配存儲空間。在同一個源程序文件中intmax(inta,intb)
{intc;
c=a>b?a:b;
returnc;}voidmain(){externintx,y;//外部變量聲明,不重新開辟內(nèi)存空間printf(“%d\n”,max(x,y));}intx=12,y=-8;//外部變量定義
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基本知識培訓(xùn)課件通知范文
- 麗水模式:地方政府驅(qū)動生態(tài)經(jīng)濟發(fā)展的職能與路徑探索
- IL-31:皮膚炎癥的關(guān)鍵因子與作用機制新探
- 八年級數(shù)學(xué)數(shù)據(jù)分析易錯點試卷及答案
- 新解讀《GB-T 39725-2020信息安全技術(shù) 健康醫(yī)療數(shù)據(jù)安全指南》
- 新解讀《GB-T 26958.21-2020產(chǎn)品幾何技術(shù)規(guī)范(GPS) 濾波 第21部分:線性輪廓濾波器 高斯濾波器》
- 骨科科考試題及答案
- 創(chuàng)傷急救面試題及答案
- 武士職業(yè)測試題及答案
- 社會刑法試題及答案
- 中醫(yī)培訓(xùn)課件:火龍罐的中醫(yī)技術(shù)
- 《外科學(xué)》第十九章-顱內(nèi)和椎管內(nèi)腫瘤課件
- 人防工程維護(hù)管理基本知識課件
- 焊接質(zhì)量事故表
- 能源數(shù)據(jù)收集計劃表
- 道路工程安全技術(shù)交底記錄大全
- 荊門市產(chǎn)業(yè)情況介紹
- T∕CAEPI 37-2021 鉻污染土壤異位修復(fù)技術(shù)指南
- 送達(dá)地址確認(rèn)書(法院最新版)
- 安全風(fēng)險預(yù)控管理體系安全手冊月日終稿
- 銷售部運營流程及SOP模版
評論
0/150
提交評論