




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蟪绦蛟O(shè)計(jì)第3章函數(shù)主要內(nèi)容●3.1模塊化及其函數(shù)實(shí)現(xiàn)●3.2常指針及使用●
3.3引用及函數(shù)間引用傳遞●3.4內(nèi)聯(lián)函數(shù)●
3.5帶默認(rèn)形參值的函數(shù)●3.6函數(shù)重載●3.7變量的作用域●
3.8變量的生存期●
3.9命名空間3.1模塊化及其函數(shù)實(shí)現(xiàn)01模塊化編程解決一個(gè)復(fù)雜問(wèn)題時(shí)也采用這種思想,將其自頂向下逐層劃分為若干子問(wèn)題(模塊),稱(chēng)為結(jié)構(gòu)化程序設(shè)計(jì)。C++語(yǔ)言中用函數(shù)來(lái)實(shí)現(xiàn)各模塊的功能。C++源程序主函數(shù)子函數(shù)1
……
子函數(shù)nmain(){inti;for(i=1;i<=5;i++)cout<<“*”;cout<<endl;for(i=1;i<=30;i++)cout<<“*”;cout<<endl;for(i=1;i<=20;i++)cout<<“*”;cout<<endl;for(i=1;i<=28;i++)cout<<“*”;cout<<endl;}***********************************************************************************【例】編程輸出下面的圖形。問(wèn)題的引入該程序編寫(xiě)了一個(gè)主函數(shù)——main()函數(shù)。對(duì)于復(fù)雜的問(wèn)題,通常把功能相對(duì)獨(dú)立的代碼放到另外的函數(shù)中——函數(shù)的定義。main()函數(shù)中要使用這個(gè)函數(shù),就去調(diào)用它——函數(shù)的調(diào)用。這些函數(shù)還可以相互調(diào)用,甚至自己調(diào)用自己來(lái)實(shí)現(xiàn)整個(gè)程序的功能。02何謂用戶函數(shù)main(){inti;for(i=1;i<=5;i++)cout<<“*”;cout<<endl;for(i=1;i<=30;i++)cout<<“*”;cout<<endl;for(i=1;i<=20;i++)cout<<“*”;cout<<endl;for(i=1;i<=28;i++)cout<<“*”;cout<<endl;}格式:void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}[類(lèi)型標(biāo)識(shí)符]函數(shù)名([形參表]){
說(shuō)明部分 語(yǔ)句部分}函數(shù)體函數(shù)頭數(shù)據(jù)傳遞接口(單向)voidpstar1()
{inti;
for(i=1;i<=30;i++)cout<<“*”;cout<<endl;}形參:是關(guān)于函數(shù)參數(shù)的個(gè)數(shù)、名稱(chēng)和類(lèi)型的說(shuō)明列表。這些參數(shù)在定義函數(shù)時(shí)進(jìn)行說(shuō)明,由于此時(shí)函數(shù)并沒(méi)有執(zhí)行,所有這些參數(shù)沒(méi)有分配內(nèi)存空間,沒(méi)有具體的值,僅僅是一個(gè)符號(hào),稱(chēng)為形式參數(shù),簡(jiǎn)稱(chēng)形參02如何定義格式:函數(shù)返回值如果函數(shù)有返回值,在定義函數(shù)頭時(shí)應(yīng)指定函數(shù)值的類(lèi)型。同時(shí),在函數(shù)體內(nèi)通過(guò)return語(yǔ)句返回函數(shù)值。如果沒(méi)有返回值,也要指定類(lèi)型為void,表示沒(méi)有返回值。[類(lèi)型標(biāo)識(shí)符]函數(shù)名([形參表]){
說(shuō)明部分 語(yǔ)句部分}voidpstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}intmax(intx,inty){intz;z=x>y?x:y;
return(z);}return(表達(dá)式);02如何定義main(){inti;for(i=1;i<=5;i++)cout<<“*”;cout<<endl;for(i=1;i<=30;i++)cout<<“*”;cout<<endl;for(i=1;i<=20;i++)cout<<“*”;cout<<endl;for(i=1;i<=28;i++)cout<<“*”;cout<<endl;}實(shí)戰(zhàn)void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<“\n”;}main()函數(shù)怎樣使用pstar()函數(shù)?pstar(5);pstar(30);pstar(5);pstar(5);函數(shù)調(diào)用對(duì)一個(gè)已經(jīng)定義了的函數(shù),調(diào)用格式為:
函數(shù)名(實(shí)參表)實(shí)參表:可以是常量、變量或表達(dá)式。04如何調(diào)用實(shí)戰(zhàn)void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}main(){
}pstar(5);pstar(30);pstar(20);pstar(28);程序怎樣執(zhí)行呢?*****實(shí)戰(zhàn)void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}main(){
}pstar(5);pstar(30);pstar(20);pstar(28);30***********************************void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}main(){
}pstar(5);pstar(30);pstar(20);pstar(28);20*******************************************************實(shí)戰(zhàn)void
pstar(intn){inti;
for(i=1;i<=n;i++)cout<<“*”;cout<<endl;}main(){
}pstar(5);pstar(30);pstar(20);pstar(28);28***********************************************************************************函數(shù)定義實(shí)戰(zhàn)總結(jié)1.函數(shù)定義2.函數(shù)調(diào)用設(shè)計(jì)函數(shù)頭設(shè)計(jì)函數(shù)體形式調(diào)用過(guò)程3.2常指針及使用電腦維修員眼中的內(nèi)存程序員的視角操作系統(tǒng)抽象化01內(nèi)存數(shù)據(jù)訪問(wèn)方式假設(shè),已定義變量inta=20;變量名訪問(wèn):cout<<a;指針訪問(wèn):int*pa;pa=&a;*pa=*pa+1;
cout<<pa<<*pa<<endl;paaMemory200012:FF780012:FF7C0012FF78pa:pa指向了變量x
*pa表示指向的變量21直接訪問(wèn)間接訪問(wèn)01內(nèi)存數(shù)據(jù)訪問(wèn)方式【例】交換變量x,y的值。#include<iostream>usingnamespacestd;voidChange(inta,intb){
inttmp;tmp=a;a=b;b=tmp;}intmain(){intx=10,y=20;cout<<"交換前:x="<<x<<",y="<<y<<endl;Change(x,y);cout<<"交換后:x="<<x<<",y="<<y<<endl;return0;}10x20yabmain()Change()10202010(1)值傳遞:02函數(shù)參數(shù)傳遞【例】交換變量x,y的值。#include<iostream>usingnamespacestd;voidChange(int*a,int*b){inttmp;tmp=*a;*a=*b;*b=tmp;}intmain(){intx=10,y=20;cout<<"交換前:x="<<x<<",y="<<y<<endl;
Change(&x,&y);cout<<"交換后:x="<<x<<",y="<<y<<endl;return0;}10x20yabmain()Change()&x&y2010(2)地址傳遞:02函數(shù)參數(shù)傳遞(2)地址傳遞:pstrMemory&str[0]Hello!intmaxstr(string*p){}intmain(){
stringstr=“Hello!”;
cout<<maxstr(str)<<endl;return0;}Mconstp[0]=‘M’;//寫(xiě)數(shù)據(jù)cout<<p[0];//讀數(shù)據(jù)H02函數(shù)參數(shù)傳遞指針和const的關(guān)系比較復(fù)雜,可形成三種常指針:常量指針指針常量指向常量的常指針03常指針例1:*p=11;x=11;p=&y;1:常量指針(即指針指向的內(nèi)容不可變)
int*p=&x;const或int
const*p=&x;√const
類(lèi)型名*指針名=初始化表達(dá)式或
類(lèi)型名const
*指針名=初始化表達(dá)式03常指針2:指針常量(即指針變量的值不可變)類(lèi)型名*
const
指針名=初始化表達(dá)式例2:intx=20,y;
int*constp=&x;*p=11;//*p可變p=&y;&x變量p變量x2011√變量y03常指針3:指向常量的常指針const類(lèi)型名*
const
指針名=初始化表達(dá)式例2:intx=20,y;
const
int*constp=&x;*p=11;p=&y;03常指針intmaxstr(string*p
){//字符串?dāng)?shù)組做參數(shù)stringtemp;intk;k=0;//假定第0個(gè)字符串最大for(intj=1;j<=4;j++){if(p[k]<p[j])//字符串比較k=j;}returnk;}intmain(){
stringstr=“Hello!”;int
i;
cout<<"最大串為"<<strarray[maxstr(str)]<<endl;return0;}const或string
const*p03常指針3.3引用及函數(shù)間引用傳遞假設(shè),已定義變量inta=20;變量名訪問(wèn):cout<<a;指針訪問(wèn):int*pa;pa=&a;cout<<*pa;引用訪問(wèn):已有變量的別名int&xa=a;cout<<xa;xapaa200012:FF7C0012:FF780012FF7C01引用inta;
int&xa;//編譯出錯(cuò)
xa=a;
(1)定義引用時(shí)一定要將其
初始化成引用某個(gè)變量。inta=3,b=6;
int&xa=a;
xa=b;
(2)引用初始化后,它就一直引用該變量,不會(huì)再引用別的變量了。01引用實(shí)際上,在C++程序中很少使用獨(dú)立變量的引用,如果要使用某一個(gè)變量,就直接使用它的原名,沒(méi)有必要故意使用它的別名。前面舉的例子只是為了說(shuō)明引用的特征和基本的用法。C++之所以增加“引用”,主要是利用它作為函數(shù)參數(shù),以擴(kuò)充函數(shù)傳遞數(shù)據(jù)的功能。01引用在C++語(yǔ)言中,函數(shù)的參數(shù)傳遞有以下兩種情況:(1)值傳遞:(2)地址傳遞:(3)引用傳遞:02函數(shù)間引用傳遞引用傳遞
#include<iostream>usingnamespacestd;voidChange(int&a,int&b){inttmp;tmp=a;a=b;b=tmp;}intmain(){intx=10,y=20;cout<<"交換前:x="<<x<<",y="<<y<<endl;Change(x,y);
cout<<"交換后:x="<<x<<",y="<<y<<endl;return0;}10變量x20變量y1020main()Change()
別名a
別名b02函數(shù)間引用傳遞引用傳遞的好處:(1)形參直接引用實(shí)參,不需要分配內(nèi)存、傳遞數(shù)據(jù)。這樣可以提高函數(shù)調(diào)用速度,降低內(nèi)存占用。這一點(diǎn)上,引用比值傳遞和地址傳遞都強(qiáng)。(2)可以通過(guò)引用實(shí)現(xiàn)雙向數(shù)據(jù)傳遞。02函數(shù)間引用傳遞例如:voidshow(constint&x){x=8;cout<<“x=“<<x<<endl;}╳√常引用聲明方式:
const類(lèi)型標(biāo)識(shí)符&引用名=目標(biāo)變量名;02函數(shù)間引用傳遞3.4內(nèi)聯(lián)函數(shù)main(){……A(5)……}A(ints){…………}調(diào)用時(shí)參數(shù)入棧、返回地址入棧;調(diào)用完成后再取出返回地址等。函數(shù)調(diào)用開(kāi)銷(xiāo)有時(shí)在程序中有一些包含語(yǔ)句非常少的小操作,可以將其定義為函數(shù)例如,計(jì)算兩個(gè)整數(shù)之中的較小值,定義為函數(shù)intmin(intv1,intv2){return(v1<v2?v1:v2);}調(diào)用函數(shù)有額外的開(kāi)銷(xiāo),如果頻繁調(diào)用,比直接計(jì)算條件運(yùn)算符慢很多如何解決這樣的問(wèn)題?01問(wèn)題C++的解決方案——內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)是一種特殊的函數(shù),它在保證程序開(kāi)發(fā)效率的同時(shí),不降低程序的執(zhí)行效率。其原理是:編譯源程序時(shí)將內(nèi)聯(lián)函數(shù)代碼直接嵌入到每一個(gè)調(diào)用語(yǔ)句處,而在執(zhí)行時(shí)不再進(jìn)行函數(shù)跳轉(zhuǎn)和數(shù)據(jù)傳遞。02何謂內(nèi)聯(lián)函數(shù)?在函數(shù)定義或函數(shù)聲明前加關(guān)鍵字inline,就將函數(shù)指定為內(nèi)聯(lián)的。inlineintmin(intv1,intv2){return(v1<v2?v1:v2);}intmain(){count<<min(3,9)<<endl;count<<min(7,23)<<endl;count<<min(33,69)<<endl;}inlineintmin(intv1,intv2){return(v1<v2?v1:v2);}intmain(){count<<(3<9?3:9)<<endl;count<<(7<23?7:23)<<endl;count<<(33<69?33:69)<<endl;}03如何聲明inline函數(shù)的適用性inline只適用于很小的且被頻繁調(diào)用的函數(shù)內(nèi)聯(lián)函數(shù)的函數(shù)體不能有循環(huán)語(yǔ)句和switch語(yǔ)句內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前inline關(guān)鍵字對(duì)編譯器來(lái)說(shuō)只是一個(gè)建議,是否采用內(nèi)聯(lián)由編譯器決定04使用場(chǎng)合3.5帶默認(rèn)形參值的函數(shù)一般情況下我們?cè)诙x一個(gè)函數(shù)的時(shí)候,形參是沒(méi)有具體的值的,需要通過(guò)函數(shù)調(diào)用時(shí)實(shí)參傳給形參具體的值。C++也允許在函數(shù)定義或函數(shù)聲明時(shí)給出默認(rèn)的形參值。在調(diào)用函數(shù)時(shí),對(duì)于有默認(rèn)值的形參,如果沒(méi)有給出相應(yīng)的實(shí)參,則函數(shù)會(huì)自動(dòng)使用默認(rèn)值;如果給出相應(yīng)的實(shí)參,則函數(shù)會(huì)優(yōu)先使用傳入的實(shí)參值。01如何定義?voidfunc(intx1,intx2=2,intx3=5)//在函數(shù)定義時(shí)給出默認(rèn)值{}intmain(){func(10);func(10,9); func(10,,6);
}//相當(dāng)于func(10,2,5)//相當(dāng)于func(10,9,5)//只能最右邊的連續(xù)若干個(gè)實(shí)參缺省02如何聲明?voidfun(charx,inty=1,floatz=3.14)//函數(shù)定義{}voidfun(inty=1,charx,floatz=3.14)//函數(shù)定義{}╳有多個(gè)默認(rèn)值形參時(shí),帶默認(rèn)值的形參也必須連續(xù)定義在形參列表的后面√03聲明順序voidprint(intval){……} intmain(){intx=20,y=10;print(x);print(y); }print(x,8);//擴(kuò)充功能:以指定進(jìn)制輸出整數(shù)04應(yīng)用:方便擴(kuò)展函數(shù)功能3.6函數(shù)重載例如:定義求2個(gè)數(shù)的較大值的函數(shù)intmax_int(intv1,intv2){return((v1>v2)?v1:v2);}doublemax_double(doublev1,doublev2){return((v1>v2)?v1:v2);}C語(yǔ)言中的函數(shù)不能重名需要為每個(gè)函數(shù)給出一個(gè)唯一的名字引入函數(shù)名相同,參數(shù)類(lèi)型或個(gè)數(shù)不同,這就是函數(shù)重載。intmax(intv1,intv2){return((v1>v2)?v1:v2);}intmax(intv1,intv2,intv3){intm;m=(v1>v2)?v1:v2;return=(m>v3)?m:v3;}doublemax(doublev1,doublev2){return((v1>v2)?v1:v2);}函數(shù)重載調(diào)用時(shí)只能根據(jù)傳遞的實(shí)參個(gè)數(shù)或類(lèi)型上的不同來(lái)進(jìn)行判斷。intmax(intv1,intv2){return((v1>v2)?v1:v2);}intmax(intv1,intv2,intv3){intm;m=(v1>v2)?v1:v2;return=(m>v3)?m:v3;}doublemax(doublev1,doublev2){return((v1>v2)?v1:v2);}intmain(){cout<<max(9,5);cout<<max(9,5,17);cout<<max(9.6,5.0);cout<<max(9.6,5);}√√√函數(shù)重載intadd(intx,inty);intadd(inta,intb);intadd(intx,inty);voidadd(intx,inty);TIP1:不同的形參名不能區(qū)分重載函數(shù)TIP2:返回值也不能區(qū)分重載函數(shù)TIP3:一般用相同的函數(shù)名表示相似或相同的功能.示例1示例2示例3intadd(intx,inty){returnx+y;}floatadd(floatx,floaty){return(x>y)x:y;}錯(cuò)誤示例3.7變量作用域定義變量:編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元使用變量:程序中使用變量名對(duì)內(nèi)存讀寫(xiě)操作內(nèi)存…….main(){inta;a=10;cout<<a<<endl;}10變量回顧main(){inta=3,b=7;swap(a,b);
cout<<a<<b<<endl;}voidswap(inta,intb){intt;t=a;a=b;b=t;}變量的有效范圍?變量回顧變量的作用域(scope)含義:在哪些代碼范圍內(nèi)可以使用變量判定方法:變量在源程序中被定義的位置。局部變量(LocalVariable)全局變量(GlobalVariable)01局部變量main(){inta=0,b=1;cout<<a<<b<<endl;
{intb=4;
cout<<b;}}voidf1(inta){intb;……}局部變量:語(yǔ)句塊內(nèi)定義的變量。語(yǔ)句塊:
{}(函數(shù)或復(fù)合語(yǔ)句)函數(shù)的形參屬于局部變量。局部變量的作用域:語(yǔ)句塊內(nèi)。01局部變量main(){inta=0,b=1;printf(“%d%d”,a,b);
{intb=4;
printf(“%d”,b);}}voidf1(inta){intb;
}局部變量同名不同作用域同名無(wú)交集:互不干擾有交集:小范圍變量有效同一作用域不允許同名main(){inta=0,b=1;inta=3;
{intb=4;
cout<<b<<endl;}}voidf1(inta){intb;……}a=0intab=1b=401局部變量全局變量:在函數(shù)外部定義的變量稱(chēng)為全局變量。作用域:從定義變量的位置開(kāi)始到整個(gè)源文件結(jié)束止。intk=10;main(){intm,j=k;intk=20;m=k;cout<<k<<‘,’<<j<<‘,’<<m<<endl;}02全局變量局部變量與全局變量同名無(wú)交集:互不干擾有交集:小范圍變量有效intk=10;main(){intm,j=k;intk=20;m=k;cout<<k<<‘,’<<j<<‘,’<<m<<endl;}k20,10,20k10m20j10k2002全局變量問(wèn)題:編譯器如何區(qū)分不同作用域的
同名變量?編譯器通過(guò)把不同作用域變量映射到不同的地址空間局部變量一個(gè)語(yǔ)句塊內(nèi)的變量都在同一空間分配地址全局變量在靜態(tài)存儲(chǔ)區(qū)分配地址內(nèi)存…….…….main()swap()靜態(tài)區(qū)動(dòng)態(tài)區(qū)aa全局變量a03變量同名問(wèn)題問(wèn)題:全局變量有什么用?全局變量在某些場(chǎng)合下很有用當(dāng)幾個(gè)函數(shù)必須共享同一數(shù)據(jù)時(shí)內(nèi)存…….…….main()swap()靜態(tài)區(qū)動(dòng)態(tài)區(qū)aa全局變量03變量同名問(wèn)題floatadd,sub,mul,div;voidsdj(floatx,floaty){
add=x+y;sub=x-y;mul=x*y;div=x/y;}main(){floatx,y;
cin>>x>>y;sdj(x,y);cout<<add<<sub<<mul<<div<<endl;}共享多個(gè)變量04全局變量應(yīng)用判定方法:定義位置決定(變量的存儲(chǔ)空間不同)同名問(wèn)題:同一作用域不能同名不同作用域是可以同名的,作用域交叉部分小范圍有效總結(jié)3.8變量的存儲(chǔ)類(lèi)別和生存期只讀存儲(chǔ)區(qū)存放機(jī)器代碼和常量等只讀數(shù)據(jù)。靜態(tài)存儲(chǔ)區(qū)存放程序中的全局變量和靜態(tài)變量等動(dòng)態(tài)存儲(chǔ)區(qū)用于存放函數(shù)形參、局部變量等內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)只讀存儲(chǔ)區(qū)……01C++程序的內(nèi)存映像變量的存儲(chǔ)類(lèi)別編譯器為變量分配內(nèi)存的方式:決定了變量的生存期(Lifetime)在靜態(tài)存儲(chǔ)區(qū)中分配內(nèi)存的變量(生存期)分配空間:發(fā)生在程序編譯或鏈接時(shí)釋放空間:整個(gè)程序運(yùn)行結(jié)束在動(dòng)態(tài)存儲(chǔ)區(qū)中分配內(nèi)存的變量(生存期)分配空間:定義它的語(yǔ)句塊開(kāi)始執(zhí)行時(shí)釋放空間:語(yǔ)句塊結(jié)束時(shí)內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)02變量的存儲(chǔ)類(lèi)別聲明變量的存儲(chǔ)類(lèi)別[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量表;內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)只讀存儲(chǔ)區(qū)auto,static,register,extern02變量的存儲(chǔ)類(lèi)別1.局部變量的存儲(chǔ)類(lèi)別有三種:auto,static和register。(1)auto變量
局部變量如果使用“auto”關(guān)鍵字或缺省該關(guān)鍵字,這種局部變量叫“自動(dòng)變量”。如:autointa,b;或inta,b;自動(dòng)變量的值:存放在動(dòng)態(tài)存儲(chǔ)區(qū)中自動(dòng)變量的生存期:
函數(shù)調(diào)用時(shí)分配空間,執(zhí)行結(jié)束釋放空間內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)02變量的存儲(chǔ)類(lèi)別例:main(){intk;intcal(intb);for(k=1;k<=2;k++)cal(k);}intcal(intb){inta=10;cout<<a<<“+”<<b<<“=”<<a+b;a+=10;}運(yùn)行結(jié)果:10+1=11
main()k1cal()b1a1020動(dòng)態(tài)區(qū)02變量的存儲(chǔ)類(lèi)別例:main(){intk;intcal(intb);for(k=1;k<=2;k++)cal(k);}intcal(intb){inta=10;cout<<a<<“+”<<b<<“=”<<a+b;a+=10;}運(yùn)行結(jié)果:10+1=11
main()k2cal()b2a1020動(dòng)態(tài)區(qū)10+2=12注意:必須有賦值或賦初值語(yǔ)句,否則自動(dòng)變量值不定,稱(chēng)“無(wú)定義”。在同一函數(shù)的兩次調(diào)用之間,自動(dòng)變量的值不保留。02變量的存儲(chǔ)類(lèi)別(2)靜態(tài)局部變量
在函數(shù)體中定義的局部變量如果使用“static”關(guān)鍵字。如:staticinta=10;靜態(tài)局部變量的值:存放在靜態(tài)存儲(chǔ)區(qū)中靜態(tài)局部變量的生存期:整個(gè)程序運(yùn)行期間注意:程序編譯時(shí)分配空間并賦初值,在整個(gè)程序的運(yùn)行期間,一直保留而不釋放,直到程序運(yùn)行結(jié)束。自動(dòng)變量在執(zhí)行函數(shù)時(shí)賦初值,函數(shù)結(jié)束釋放空間。內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)02變量的存儲(chǔ)類(lèi)別例:main(){intk;intcal(intb);for(k=1;k<=2;k++)cal(k);}intcal(intb){staticinta=10;cout<<a<<“+”<<b<<“=”<<a+b;a+=10;}運(yùn)行結(jié)果:10+1=11
main()k1cal()b1動(dòng)態(tài)區(qū)a10靜態(tài)區(qū)2002變量的存儲(chǔ)類(lèi)別例:main(){intk;intcal(intb);for(k=1;k<=2;k++)cal(k);}intcal(intb){staticinta=10;cout<<a<<“+”<<b<<“=”<<a+b;a+=10;}運(yùn)行結(jié)果:10+1=11
main()k2cal()b2動(dòng)態(tài)區(qū)a20靜態(tài)區(qū)20+2=2230注意:(1)靜態(tài)局部變量在編譯時(shí)賦初值,程序運(yùn)行時(shí),每次調(diào)用函數(shù),該變量保留上一次的值,而非初值。(2)若定義時(shí)不賦初值,則局部靜態(tài)變量為0,自動(dòng)變量值不定。(3)函數(shù)調(diào)用結(jié)束后,雖然靜態(tài)局部變量有值,但其他函數(shù)不能使用它。02變量的存儲(chǔ)類(lèi)別2.全局變量的存儲(chǔ)(1)外部全局變量
在定義全局變量時(shí)缺省其存儲(chǔ)類(lèi)別,則稱(chēng)為“外部變量”。外部變量的值:存放在靜態(tài)存儲(chǔ)區(qū)外部變量的生存期:整個(gè)程序的運(yùn)行期間內(nèi)存代碼區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)常量存儲(chǔ)區(qū)02變量的存儲(chǔ)類(lèi)別2.全局變量的存儲(chǔ):(1)外部全局變量在定義全局變量時(shí)缺省其存儲(chǔ)類(lèi)別,則稱(chēng)為“外部變量”。外部變量的值:存放在靜態(tài)存儲(chǔ)區(qū)外部變量的生存期:整個(gè)程序的運(yùn)行期間(2)擴(kuò)展外部全局變量格式為:
extern數(shù)據(jù)類(lèi)型外部變量名表;intmain(){cout<<“x=”<<x<<endl;return0;
}intx=10;externintx;02變量的存儲(chǔ)類(lèi)別2.全局變量的存儲(chǔ)(3)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)增韌母料數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職教育學(xué)模擬考試試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備初級(jí)技能模擬考試試卷A卷含答案
- 2021-2022學(xué)年廣東省廣州四中初中部逸彩校區(qū)七年級(jí)(下)期中數(shù)學(xué)試卷(含答案)
- 2025年天津市專(zhuān)業(yè)技術(shù)人員公需考試試題-為中國(guó)式現(xiàn)代化提供強(qiáng)大動(dòng)力和制度保障-黨的二十屆三中全會(huì)暨《中共中央關(guān)于進(jìn)一步全面深化改革、推進(jìn)中國(guó)式現(xiàn)代化的決定》總體解讀
- 高等教育自學(xué)考試《00074中央銀行概論》模擬試卷一
- 2025年大學(xué)英語(yǔ)六級(jí)考試預(yù)測(cè)試卷一
- 2023年同等學(xué)力申碩《英語(yǔ)》試題真題及答案
- 美容整形手術(shù)服務(wù)合同協(xié)議
- 紡織服裝產(chǎn)品質(zhì)量免責(zé)承諾書(shū)
- 2025年海南海口市水務(wù)局招聘事業(yè)單位人員35人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- COP生產(chǎn)一致性控制計(jì)劃
- 2025年電力人工智能多模態(tài)大模型創(chuàng)新技術(shù)及應(yīng)用報(bào)告-西安交通大學(xué)
- 天津2025年天津市機(jī)關(guān)后勤事務(wù)服務(wù)中心分支機(jī)構(gòu)天津市迎賓館招聘2人筆試歷年參考題庫(kù)附帶答案詳解
- 華東師大版七年級(jí)數(shù)學(xué)下冊(cè)“第1周周考”
- 教師論文撰寫(xiě)培訓(xùn)
- 2024年道路運(yùn)輸企業(yè)安全生產(chǎn)管理人員證考試題庫(kù)
- 學(xué)習(xí)雷鋒主題班會(huì)雷鋒日學(xué)習(xí)雷鋒精神-
- 事故隱患內(nèi)部舉報(bào)獎(jiǎng)勵(lì)制度
- 2020-2024年安徽省初中學(xué)業(yè)水平考試中考?xì)v史試卷(5年真題+答案解析)
- 電工每日巡查簽到表
評(píng)論
0/150
提交評(píng)論