版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 變量是對(duì)程序中的抽象內(nèi)存.main() int a; a=10; printf(“%d”,a);編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元1020002001程序中使用變量名對(duì)內(nèi)存操作1)數(shù)據(jù)類型數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性);2)按變量的作用域按變量的作用域(空間范圍), 分為局部變量(內(nèi)部變量),全局變量(外部變量);3)按變量的存在的時(shí)間)按變量的存在的時(shí)間(時(shí)間范圍),又可分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ); 定義:在函數(shù)內(nèi)定義,只在本函數(shù)內(nèi)有效 說明: main中定義的變量只在main中有效 不同函數(shù)中同名變量,占不同內(nèi)存單元 形參屬于局部變量 可定義在復(fù)合語句中有效的變量 局部變量可
2、用存儲(chǔ)類型:auto register static (默認(rèn)為auto)float f1(int a) int b,c; .char f2(int x,int y) int i,j; main() int m,n; .a,b,c有效x,y,i,j有效m,n有效例 不同函數(shù)中同名變量main() int a,b; a=3; b=4; printf(main:a=%d,b=%dn,a,b); sub(); printf(main:a=%d,b=%dn,a,b);sub() int a,b; a=6; b=7; printf(sub:a=%d,b=%dn,a,b);例 復(fù)合語句中變量#define
3、N 5main() int i; int aN=1,2,3,4,5; for(i=0;iN/2;i+) int temp;temp=ai;ai=aN-i-1;aN-i-1=temp; for(i=0;iN;i+) printf(%d ,ai);運(yùn)行結(jié)果:5 4 3 2 1例 復(fù)合語句中變量#define N 5main() int i; int aN=1,2,3,4,5; for(i=0;iN/2;i+) int temp;temp=ai;ai=aN-i-1;aN-i-1=temp; for(i=0;i外部變量說明: extern 數(shù)據(jù)類型 變量表;外部變量定義與外部變量說明不同若外部變量與局
4、部變量同名,則外部變量被屏蔽外部變量可用存儲(chǔ)類型:缺省 或 staticfloat max,min;float average(float array, int n) int i; float sum=array0; max=min=array0; for(i=1;imax) max=arrayi; else if(arrayiy?x:y; return(z);main() extern int a,b; printf(max=%d,max(a,b);int a=13,b=-8;運(yùn)行結(jié)果:max=13extern int a,b;int max() int z; z=ab?a:b; retur
5、n(z);main() printf(max=%d,max();int a=13,b=-8;例1 一個(gè)文件中的外部變量定義與說明例2 多個(gè)文件中的外部變量說明方法:在一個(gè)文件中定義外部變量,在另一個(gè)文件中用extern 對(duì)它進(jìn)行申明int A;main() File1.cextern int A;main() File2.cextern int A;main() File3.c外部變量定義外部變量定義外部變量聲名*/*ch7_17.c*/int a=3,b=5;max(int a, int b) int c; c=ab?a:b; return(c);main() int a=8; printf
6、(max=%d,max(a,b);運(yùn)行結(jié)果:max=8 *例 外部變量與局部變量:程序運(yùn)行期間分配固定存儲(chǔ)空間:程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)全局變量、局部靜態(tài)變量形參變量局部動(dòng)態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場(chǎng)保護(hù)和返回地址等生存期生存期從程序開始執(zhí)行到程序結(jié)束從包含該變量定義的函數(shù)開始執(zhí)行至函數(shù)執(zhí)行結(jié)束靜態(tài)動(dòng)態(tài)存儲(chǔ)方式程序整個(gè)運(yùn)行期間函數(shù)調(diào)用開始至結(jié)束生存期編譯時(shí)賦初值,只賦一次每次函數(shù)調(diào)用時(shí)賦初值自動(dòng)賦初值0或空字符不確定未賦初值靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)區(qū)存儲(chǔ)區(qū)寄存器局部變量外部變量作用域定義變量的函數(shù)或復(fù)合語句內(nèi)本文件其它文件u局部變量默認(rèn)為auto
7、型uregister型變量個(gè)數(shù)受限,且不能為long, double, float型u局部static變量具有全局壽命和局部可見性u(píng)局部static變量具有可繼承性u(píng)extern不是變量定義,可擴(kuò)展外部變量作用域 (已學(xué))register局部staticauto外部static外部存儲(chǔ)類別變量存儲(chǔ)類型#include int i=1;main() static int a; register int b=-10; int c=0; printf(-MAIN-n); printf(i:%d a:%d b:%d c:%dn,i,a,b,c); c=c+8; other(); printf(-MAI
8、N-n); printf(i:%d a:%d b:%d c:%dn,i,a,b,c); i=i+10; other();other() static int a=2; static int b; int c=10; a=a+2; i=i+32; c=c+5; printf(-OTHER-n); printf(i:%d a:%d b:%d c:%dn,i,a,b,c); b=a;-Main-i:1 a:0 b:-10 c:0 -Other-i:33 a:4 b:0 c:15 -Main-i:33 a:0 b:-10 c:8-Other-i:75 a:6 b:4 c:15全局i1main: a0b
9、:-10registermain:c0靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)other: a2other: b0other: c10843315443other: c10675156例 變量的壽命與可見性 1)在編譯的時(shí)候賦初值,只賦一次,在程序運(yùn)行時(shí)已經(jīng)有初值; 2)如果定義變量時(shí)不給初值,則系統(tǒng)自動(dòng)給一個(gè)初值:0(數(shù)值型),空字符(字符型) 3)雖然在函數(shù)調(diào)用后依舊存在,但其他函數(shù)不能引用它;(注意和extern 聲明外部變量的對(duì)比) 希望某些外部變量只限于被本文件引用,而不被其他文件所引用對(duì)static變量作進(jìn)一步的說明static int A;main() File1.cextern int A;mai
10、n() File2.cextern int A;main() File3.c如果在一個(gè)源文件中定義的函數(shù),只能被本文件中的函數(shù)調(diào)用,而不能被同一程序其它文件中的函數(shù)調(diào)用,這種函數(shù)稱為內(nèi)部函數(shù)。定義一個(gè)內(nèi)部函數(shù),只需在函數(shù)類型前再加一個(gè)“static”關(guān)鍵字即可,如下所示:static 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) 關(guān)鍵字“static”,譯成中文就是“靜態(tài)的”,所以內(nèi)部函數(shù)又稱靜態(tài)函數(shù)。但此處“static”的含義不是指存儲(chǔ)方式,而是指對(duì)函數(shù)的作用域僅局限于本文件。使用內(nèi)部函數(shù)的好處是:不同的人編寫不同的函數(shù)時(shí),不用擔(dān)心自己定義的函數(shù),是否會(huì)與其它文件中的函數(shù)同名,因?yàn)橥矝]有關(guān)系。 當(dāng)一
11、個(gè)源程序由多個(gè)源文件組成時(shí),語言根據(jù)函數(shù)能否被其它源文件中的函數(shù)調(diào)用,將函數(shù)分為內(nèi)部函數(shù)內(nèi)部函數(shù)和外部函數(shù)外部函數(shù)。外部函數(shù)的定義:在定義函數(shù)時(shí),如果沒有加關(guān)鍵字外部函數(shù)的定義:在定義函數(shù)時(shí),如果沒有加關(guān)鍵字“static”,或冠以關(guān)鍵字,或冠以關(guān)鍵字“extern”,表示此函數(shù)是外部函數(shù):,表示此函數(shù)是外部函數(shù):extern 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名(函數(shù)參數(shù)表函數(shù)參數(shù)表) 調(diào)用外部函數(shù)時(shí),需要對(duì)其進(jìn)行說明:調(diào)用外部函數(shù)時(shí),需要對(duì)其進(jìn)行說明:extern 函數(shù)類型 函數(shù)名(參數(shù)類型表),函數(shù)名2(參數(shù)類型表2);案例7.11 外部函數(shù)應(yīng)用。外部函數(shù)應(yīng)用。(1)文件)文件mainf.cmain() extern void input(), process(), output(); input(); p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南輕工職業(yè)學(xué)院招聘工作人員(碩士)46名模擬筆試試題及答案解析
- 2025廣東深圳市規(guī)劃和自然資源局光明管理局勞務(wù)派遣人員招聘1人模擬筆試試題及答案解析
- 2025年12月江蘇南京江北新區(qū)教育局所屬部分事業(yè)單位招聘教師20人參考筆試題庫附答案解析
- 2025四川愛眾發(fā)展集團(tuán)有限公司市場(chǎng)化選聘中層管理儲(chǔ)備人才2人參考考試題庫及答案解析
- 2025湖北神農(nóng)架林區(qū)實(shí)驗(yàn)小學(xué)附屬幼兒園食堂員工及保育員招聘2人備考筆試試題及答案解析
- 2025西安交通大學(xué)第一附屬醫(yī)院醫(yī)學(xué)影像科招聘勞務(wù)派遣助理護(hù)士備考考試題庫及答案解析
- 網(wǎng)店咨詢簽協(xié)議書
- 網(wǎng)簽變更合同范本
- 聯(lián)合辦學(xué)合同協(xié)議
- 聯(lián)戶長聘任協(xié)議書
- 裝飾公司合伙協(xié)議書
- 尊崇憲法維護(hù)憲法
- 排水設(shè)施使用協(xié)議書
- 老年人失智癥行為和精神癥狀(BPSD)護(hù)理方案
- 防水工程專項(xiàng)施工方案
- 2025年超星爾雅學(xué)習(xí)通《環(huán)境經(jīng)濟(jì)學(xué)與生物資源管理》考試備考題庫及答案解析
- 智慧樹知到《創(chuàng)新創(chuàng)業(yè)與管理基礎(chǔ)(東南大學(xué))》章節(jié)測(cè)試附答案
- 腦機(jī)接口技術(shù)與應(yīng)用研究報(bào)告(2025年)
- 江蘇省鹽城市東臺(tái)市2024-2025學(xué)年六年級(jí)上學(xué)期期末考試英語試題
- 鐵塔冰凍應(yīng)急預(yù)案
- 文物復(fù)仿制合同協(xié)議
評(píng)論
0/150
提交評(píng)論