




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C程序設(shè)計(jì)變量作用域與存儲(chǔ)類別第一節(jié)變量的作用域局部變量12本節(jié)主要內(nèi)容332變量的作用域:允許使用變量的區(qū)域依照變量作用域的不同,可以把變量分為兩種:變量全局變量局部變量第一節(jié)變量的作用域3局部變量:在大括號(hào)內(nèi)定義的變量局部變量的作用域:
局部變量只能在定義它的括號(hào)內(nèi)使用,其作用范圍不能向括號(hào)外滲透(可以向內(nèi)層括號(hào)中滲透)。在函數(shù)體開頭定義的,在本函數(shù)內(nèi)有效在復(fù)合語句中定義的,則只在復(fù)合語句中有效8.1.1局部變量48.1.1局部變量intmain()/*指出程序中的錯(cuò)誤*/{
inta,b;
scanf(“%d%d”,
&a,&b);
{
intc;
c=a+b;
}
printf(“c=%d\n”,
c);
printf(“a=%d,b=%d\n”,
a,b);return0;}錯(cuò)誤!應(yīng)移入復(fù)合語句內(nèi)移入復(fù)合語句內(nèi),可否?5說明:即便是在主函數(shù)中定義的變量,也不能被其它函數(shù)使用形式參數(shù)也是局部變量(與函數(shù)內(nèi)定義的相同)不同函數(shù)中定義的變量可以同名,但表示的不是同一變量,它們?cè)趦?nèi)存中占用不同的單元8.1.1局部變量68.1.2全局變量m,n的作用域x,y的作用域全局變量:
在函數(shù)外定義的變量,又叫外部變量全局變量的作用域:從定義處到源文件結(jié)束如:intx,y;
/*定義在函數(shù)外*/
intmain()
{……}f1(){……}intm,n;
/*定義在函數(shù)外*/f2(){……}f3(){……}78.1.2全局變量全局變量的作用域可以擴(kuò)展
(1)在本源文件中擴(kuò)展,如:intx,y;externm;
/*變量聲明,可以不寫類型*/intmain()
{……}f1(){……}intm,n;
f2(){……}f3(){……}擴(kuò)展后m的作用域m原本的作用域88.1.2全局變量全局變量的作用域可以擴(kuò)展
(2)擴(kuò)展到其他源文件,如:m的作用域//源文件2externm;intf4(){……}floatf5(){……}voidf6(){……}//源文件1intx,y;intmain(){……}f1(){……}intm,n;f2(){……}f3(){……}98.1.2全局變量全局變量的作用域可以擴(kuò)展
(3)如果不想讓其他源文件使用,可以在定義時(shí)加上static進(jìn)行限制//源文件2externm;intf3(){……}voidf4(){……}voidf5(){……}//源文件1staticintm;intmain(){……}voidf1(){……}intf2(){……}//源文件3intm;
floatf6(){……}voidf7(){……}intf8(){……}108.1.2全局變量全局變量的作用:
給多個(gè)函數(shù)提供一個(gè)公共場(chǎng)所,便于函數(shù)之間交換數(shù)據(jù)全局變量的適用場(chǎng)合:
有些情況下,主調(diào)函數(shù)需要被調(diào)函數(shù)提供兩個(gè)以上的值,如:在若干數(shù)據(jù)中找出最大值和最小值而函數(shù)只能有一個(gè)返回值118.1.2全局變量voidmax_min(intx,inty){inti;for(i=x;i<=x*y;i+=x)if(i%y==0){min=i;break;}max=x*y/min;}#include<stdio.h>intmax,min;voidmax_min(int,int);intmain(){inta,b;scanf(“%d%d”,&a,&b);max_min(a,b);printf(“%d,%d\n”,max,min);return0;}
求兩個(gè)數(shù)的最小公倍數(shù)和最大公約數(shù)128.1.2全局變量全局變量的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):一個(gè)函數(shù)將值放入全局變量,其他函數(shù)都可以使用,從而增加了函數(shù)間的聯(lián)系缺點(diǎn):占內(nèi)存時(shí)間長(zhǎng)函數(shù)之間互相影響,增加了函數(shù)間耦合性
除非必要,一般不用全局變量問題:全局變量可否作參數(shù)?13第二節(jié)同名變量的辨析局部變量和全局變量同名時(shí)的分辨
inta=1,b=2,c=3,d=4;intmain(){inta,b;a=4;/*局部變量*/b=5;
/*局部變量*/c=6;
/*全局變量*/if(a>b){intc;c=a;
/*c是復(fù)合語句級(jí),a是函數(shù)級(jí)*/a=b;/*a,b都是函數(shù)級(jí)*/b=d;/*b是函數(shù)級(jí),d是全局*/}……}14第三節(jié)變量的存儲(chǔ)類別和生存期內(nèi)存區(qū)域的劃分123本節(jié)主要內(nèi)容3局部變量的種類333全局變量的種類15第三節(jié)變量的存儲(chǔ)類別和生存期內(nèi)存區(qū)域的劃分123本節(jié)主要內(nèi)容3局部變量的種類333全局變量的種類168.3.1內(nèi)存區(qū)域的劃分堆區(qū)代碼區(qū)非零區(qū)零區(qū)棧區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)全局變量靜態(tài)局部變量自動(dòng)變量函數(shù)形參臨時(shí)變量17第三節(jié)變量的存儲(chǔ)類別和生存期內(nèi)存區(qū)域的劃分123本節(jié)主要內(nèi)容3局部變量的種類333全局變量的種類188.3.2局部變量的種類局部變量根據(jù)生存期不同,又分為局部自動(dòng)變量和局部靜態(tài)變量局部自動(dòng)變量的數(shù)據(jù)可以存放在內(nèi)存中,也可以存放在寄存器中,存放在寄存器中的稱為寄存器變量局部變量寄存器變量register局部自動(dòng)變量auto局部靜態(tài)變量static198.3.2局部變量的種類局部自動(dòng)變量例:intf(inta,intb)
/*局部自動(dòng)變量*/{
autointc;
/*auto可省*/
c=a+b;
……}208.3.2局部變量的種類局部自動(dòng)變量的特點(diǎn):動(dòng)態(tài)存儲(chǔ):需要時(shí)才開辟空間,用完即釋放,若再用,需要重新開辟賦初值次數(shù)與開辟空間次數(shù)相等:若變量定義時(shí)賦了初值,則每次開辟空間時(shí)都要存入初值若定義變量時(shí)無初值,則其值不確定218.3.2局部變量的種類voidf(){inta=1,b;……}intmain(){f();f();return0;}內(nèi)存1a1a?b?b228.3.2局部變量的種類局部靜態(tài)變量
voidf(){
staticintn=0;/*局部靜態(tài)變量*/n++;printf(“第%d次調(diào)用\n”,n);……}238.3.2局部變量的種類voidf(){
staticintn=0;
n++;
printf(“第%d次調(diào)用\n”,n);}intmain(){inti;for(i=1;i<=2;i++)f();return0;}內(nèi)存0n?i12123第1次調(diào)用第2次調(diào)用屏幕輸出:執(zhí)行過程:248.3.2局部變量的種類局部靜態(tài)變量的特點(diǎn):靜態(tài)存儲(chǔ):程序開始時(shí)開辟空間,用完不釋放,以備后用,整個(gè)程序結(jié)束時(shí)再釋放(只開辟一次,也只釋放一次)保留數(shù)據(jù):第一次調(diào)用函數(shù)時(shí)留下的數(shù)據(jù),第二次可以繼續(xù)用……若有初值,只賦一次若變量定義時(shí)賦了初值,則開辟空間時(shí)存入初值,且僅此一次若定義變量時(shí)無初值,則系統(tǒng)自動(dòng)置0模式作用范圍僅限于定義它的括號(hào)內(nèi)適用場(chǎng)合:函數(shù)調(diào)用時(shí)存的數(shù)據(jù)需要保留到下次調(diào)用258.3.2局部變量的種類寄存器變量:voidf(inta,intb){
registerinti;/*寄存器變量*/
……}寄存器變量的特點(diǎn):變量的值存放在系統(tǒng)分配的寄存器中,可減少變量存取時(shí)的時(shí)間開銷268.3.2局部變量的種類寄存器變量的適用場(chǎng)合:對(duì)運(yùn)行速度要求高的程序中系統(tǒng)對(duì)寄存器變量的限制:只有局部自動(dòng)變量和形參可定義為寄存器變量寄存器變量的數(shù)目不能太多,若非必要一般不用微機(jī)上,編譯器一般將寄存器變量當(dāng)作自動(dòng)變量處理原因:寄存器數(shù)目有限27第三節(jié)變量的存儲(chǔ)類別和生存期局部變量和全局變量123本節(jié)主要內(nèi)容3局部變量的種類333全局變量的種類288.3.3全局變量的種類全局變量根據(jù)作用域不同,又分為兩種:
全局變量一般全局變量externstatic型全局變量static存儲(chǔ)類型:都是靜態(tài)存儲(chǔ),程序運(yùn)行之前開辟空間,程序結(jié)束才釋放初值:若不賦初值,其值都為0
文件級(jí)程序級(jí)298.3.3全局變量的種類一般全局變量(用extern說明或省略)作用域可在本源文件內(nèi)擴(kuò)展:如:intx,y;intmain(){……}
externm;
f1(){……}intm,n;
f2(){……}
m原本作用域m現(xiàn)在作用域308.7.3全局變量的種類一般全局變量(程序級(jí))作用域還可擴(kuò)展到其它源文件:
intmain()
{……}
intm,n;
f1(){……}
f2(){……}externm,n;voidf1(){……}…………源文件1源文件2m,n作用域318.7.3全局變量的種類static型全局變量(有些教材稱做靜態(tài)全局變量)作用域只能在本源文件內(nèi)擴(kuò)展:如:intmain(){……}
externm;
f1(){……}
staticintm,n;
f2(){……}
n的作用域m的作用域328.7.3全局變量的種類static型全局變量(文件級(jí))作用域只能在本源文件內(nèi)擴(kuò)展:
externm,n;intmain(){……
……
}
intm,n;voidf1(){……}…………staticintm,n;voidf2(){……}…………源文件3源文件2源文件133第四節(jié)變量作用域和生存期小結(jié)全局變量存儲(chǔ)類型生存期作用域初值空間分配空間釋放本文件中(變量定義之后)本文件中(變量定義之前)其他源文件中extern(可省)靜態(tài)main函數(shù)執(zhí)行前main函數(shù)結(jié)束時(shí)無條件使用聲明后方可用聲明后方可用若不賦初值其值為0static靜態(tài)main函數(shù)執(zhí)行前main函數(shù)結(jié)束時(shí)無條件使用聲明后方可用不可用若不賦初值其值為0局部變量存儲(chǔ)類型生存期作用域初值空間分配空間釋放定義它的大括號(hào)內(nèi)定義它的大括號(hào)外其他文件或函數(shù)中auto(可?。﹦?dòng)態(tài)需要時(shí)分配用完即釋放
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)鎮(zhèn)安全知識(shí)培訓(xùn)課件
- 天然氣管道運(yùn)輸投資合同
- 《數(shù)學(xué)數(shù)列與數(shù)列極限概念教學(xué)教案》
- 河南省鄭州市鞏義市2024-2025學(xué)年八年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 農(nóng)民權(quán)益保護(hù)與農(nóng)業(yè)經(jīng)濟(jì)合作協(xié)議
- 在線教育平臺(tái)課程開發(fā)與銷售合同
- 未來辦公室技術(shù)發(fā)展趨勢(shì)報(bào)告
- 線上教育行業(yè)用戶服務(wù)免責(zé)協(xié)議書
- 磚燒結(jié)磚購(gòu)銷協(xié)議合同
- 世界級(jí)企業(yè)管理模式比較研究表
- 小學(xué)二年級(jí)下冊(cè)《勞動(dòng)》教案
- 2025年江西青年職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 初中物理校本教材《物理之窗》內(nèi)容
- 清華大學(xué)考生自述
- 《紅樓夢(mèng) - 林黛玉進(jìn)賈府》PPT課件(教學(xué))
- 【新教材】高中語文超全課內(nèi)知識(shí)梳理(選擇性必修中冊(cè))
- 血?dú)夥治雠R床基礎(chǔ)(課堂PPT)
- 第三章 文獻(xiàn)的版本
- 五年級(jí)下冊(cè)英語課件--Lesson--7《Arriving-in-Beijing-》|冀教版-(三起)-(共21張PPT)
- 武發(fā)[2004]13關(guān)于積極推進(jìn)“ 城中村”綜合改造工作的意見
- 體溫單(三測(cè)單)
評(píng)論
0/150
提交評(píng)論