




已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章 數(shù)據(jù)的存儲(chǔ)方式,9.1 局部變量和全局變量 9.2 變量的存儲(chǔ)方式 9.3 內(nèi)部函數(shù)和外部函數(shù) 9.4 動(dòng)態(tài)存儲(chǔ)單元 9.5 變量修飾符 const,9.1 局部變量和全局變量 函數(shù)的作用域規(guī)則,是關(guān)于控制一段代碼是否能夠調(diào)用或者訪問(wèn)另一段中的代碼或數(shù)據(jù)的一些規(guī)定。 9.1.1 局部變量 在任何一個(gè)代碼塊內(nèi)定義的變量叫做局部變量。所謂代碼塊就是在一對(duì)花括號(hào)內(nèi)的代碼段。說(shuō)明局部變量最常見(jiàn)的代碼塊是函數(shù)。,圖9.1 局部變量的作用域示意圖,圖9.1表示出各局部變量的作用域。 局部變量在沒(méi)有被賦值之前,它的值是不確定的。 形參也是局部變量。它的作用域和使用規(guī)則,與函數(shù)內(nèi)部的局部變量完全一樣,不再討論。,9.1.2 全局變量 在函數(shù)之外定義的變量,稱為全局變量,也叫做外部變量。,9.2 變量的存儲(chǔ)方式,我們從變量的作用域的角度,把變量區(qū)分為全局變量和局部變量。從變量值存在時(shí)間的角度看,變量又可分為靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量。 供用戶使用計(jì)算機(jī)的內(nèi)存空間,可分為以下三個(gè)部分: (1) 應(yīng)用程序區(qū); (2) 靜態(tài)存儲(chǔ)區(qū); (3) 動(dòng)態(tài)存儲(chǔ)區(qū)。,在兩大類存儲(chǔ)方法中,變量又可具體分為四種:自動(dòng)的(auto)、靜態(tài)的(static)、寄存器的(register)和外部的(extern)。 在變量定義語(yǔ)句中,存儲(chǔ)定義符放在它所修飾的基本數(shù)據(jù)類型前面,其一般形式如下: storage_type type_specifier variable_list; 這里,storage_type是存儲(chǔ)定義符(auto,static,register,extern);type_specifier是基本數(shù)據(jù)類型; variable_list是被說(shuō)明的變量名表。,9.2.1 局部變量的存儲(chǔ)定義 1. 自動(dòng)變量(auto) 局部變量一般情況下(不加特殊聲明)屬于動(dòng)態(tài)存儲(chǔ)類。,2. 靜態(tài)局部變量(static) 有時(shí)希望局部變量的值,在每次離開(kāi)其作用范圍后不消失并保持原值,占用的存儲(chǔ)空間不釋放。這時(shí),應(yīng)該用存儲(chǔ)定義符static將變量定義為靜態(tài)局部變量。例如語(yǔ)句: static int num1, num2; 定義變量num1和num2為靜態(tài)局部變量。,3. 寄存器變量(register) 如果變量在程序運(yùn)行中使用非常頻繁,則為存取該變量要消耗很多時(shí)間。利用寄存器操作速度快的特點(diǎn),將變量存放在CPU的寄存器中,可以提高程序的運(yùn)行效率。寄存器變量占用CPU的高速寄存器,不占用內(nèi)存單元。變量的值就保存在CPU的寄存器中。 定義寄存器變量語(yǔ)句的一般形式為: register 類型名 變量名表;,9.2.2 全局變量的存儲(chǔ)定義 1. 外部全局變量 如果在一源文件中將某些變量定義為全局變量。而這些全局變量允許其它源文件中的函數(shù)引用的話,就需要有一種辦法,把程序的全局變量告訴所有的模塊文件。解決的辦法是,在一個(gè)模塊文件中將變量定義為全局變量,而在其它模塊文件中,用extern來(lái)說(shuō)明這些變量。例如, extern int a; 說(shuō)明整型變量a在其它源程序文件中已經(jīng)定義為全局變量,在本文件中被說(shuō)明是外部存儲(chǔ)類型的,因而本文件可以引用。,2. 靜態(tài)全局變量 靜態(tài)全局變量是這樣一種全局變量,它在被定義的源程序文件以外是不可見(jiàn)的。也就是說(shuō),靜態(tài)全局變量只限于它所在的源程序文件中的函數(shù)引用,而不能被其它源程序文件中的函數(shù)引用。靜態(tài)全局變量定義的形式是在全局變量定義語(yǔ)句的數(shù)據(jù)類型前加靜態(tài)存儲(chǔ)定義符static。其形式和局部靜態(tài)變量是一樣的。例如, static int a: 定義為靜態(tài)全局變量。,9.2.3 變量存儲(chǔ)類型小結(jié) 一個(gè)數(shù)據(jù)包含有兩個(gè)屬性:數(shù)據(jù)類型和存儲(chǔ)類型。 從作用域的角度,我們有局部變量和全局變量。按它們的存儲(chǔ)類別,局部變量又分為自動(dòng)的、靜態(tài)的和寄存器的三種。全局變量又分為靜態(tài)的和外部的兩種。,現(xiàn)將上述變量的存儲(chǔ)類型從作用域和生存期的角度歸納成表9.2.2。表中“”表示“是”,“”表示“否”。,9.3 內(nèi)部函數(shù)和外部函數(shù),9.3.1 內(nèi)部函數(shù) 如果一個(gè)函數(shù)只能被本源程序文件的函數(shù)所調(diào)用,這樣的函數(shù)稱為內(nèi)部函數(shù)。內(nèi)部函數(shù)也叫做靜態(tài)函數(shù)。內(nèi)部函數(shù)在定義時(shí),要在函數(shù)類型前加上說(shuō)明符static。例如, static char myfunction(char ch) 使用內(nèi)部函數(shù)的好處是,如果在一個(gè)較大的程序的某些文件中,函數(shù)同名不會(huì)產(chǎn)生相互干擾。,9.3.2 外部函數(shù) 外部函數(shù)可以被程序的其它文件內(nèi)的函數(shù)調(diào)用。外部函數(shù)定義的方法是,在定義函數(shù)時(shí),在函數(shù)類型前加extern。例如, extern float func(int x,float y) 如果在定義函數(shù)時(shí)省略extern,則隱含為外部函數(shù)。例如,例9.2.4程序中的函數(shù): void num_init() int numbers() 在定義時(shí)雖然沒(méi)有用extern說(shuō)明,但實(shí)際上就是外部函數(shù),它們可以被另一個(gè)文件的函數(shù)調(diào)用。,9.3.3 多文件程序的編譯工程文件 (1) 選擇主菜單中的projet,它有如下的子菜單: Open project. Close project. Add item. Delete item Local options. Include files. (2) 用Add item命令將組成該工程的各文件裝入。,編譯、連接和運(yùn)行文件。在集成開(kāi)發(fā)環(huán)境下,這可用下述的兩種方法之一進(jìn)行: (1) 使用主菜單的Run命令進(jìn)行編譯、連接和運(yùn)行; (2) 選用Compile Make命令進(jìn)行編譯和連接,然后再用Run命令運(yùn)行。,9.4 動(dòng)態(tài)存儲(chǔ)單元,語(yǔ)言在計(jì)算機(jī)中存儲(chǔ)數(shù)據(jù)的方式有兩種,第一種方式,是通過(guò)全局變量和局部變量來(lái)存儲(chǔ);第二種方式,是通過(guò)語(yǔ)言的動(dòng)態(tài)存儲(chǔ)分配系統(tǒng)來(lái)存儲(chǔ)。 在第一種方式下,程序員需要定義全局變量或局部變量。在第二種方式下,在程序運(yùn)行中,當(dāng)需要存儲(chǔ)空間時(shí),向系統(tǒng)申請(qǐng),使用完畢,還將申請(qǐng)的內(nèi)存空間退還給系統(tǒng)。 malloc()函數(shù)的原型為: void *malloc(unsigned number_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年四川省西南醫(yī)科大學(xué)選調(diào)筆試真題
- 2024年四川阿壩師范學(xué)院選調(diào)筆試真題
- 2024年廈門銀行福建漳州分行招聘筆試真題
- 2024年莆田九十五醫(yī)院招聘筆試真題
- 2024年馬鞍山市福利院招聘筆試真題
- 2024年吉安縣農(nóng)業(yè)農(nóng)村局招聘筆試真題
- 行業(yè)最佳實(shí)踐分享與討論計(jì)劃
- 法學(xué)概論論文寫作指導(dǎo)試題及答案
- 信息處理技術(shù)員考題及答案收錄
- 2025屆江蘇省揚(yáng)州市儀征市第三中學(xué)數(shù)學(xué)八下期末經(jīng)典模擬試題含解析
- 21. 三黑和土地 課件
- 挖掘機(jī)理論試題及答案
- 2025年銀行從業(yè)資格考試個(gè)人理財(cái)真題卷權(quán)威解讀
- 興安盟2025年興安盟事業(yè)單位春季專項(xiàng)人才引進(jìn)30人筆試歷年參考題庫(kù)附帶答案詳解
- 西部計(jì)劃考試試題及答案
- 2023江蘇南通軌道交通集團(tuán)有限公司運(yùn)營(yíng)分公司公開(kāi)社會(huì)招聘97名工作人員筆試參考題庫(kù)附帶答案詳解
- 嬰兒保姆協(xié)議書范本
- 裝修施工危險(xiǎn)性較大工程應(yīng)急處理預(yù)案:保障施工安全
- 2025年中考物理模擬考試卷(帶答案)
- 出版行業(yè)書籍的包裝與運(yùn)輸實(shí)施方案
- 光纜線路工程驗(yàn)收標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論