cchap4利用函數(shù)實現(xiàn)制定功能_第1頁
cchap4利用函數(shù)實現(xiàn)制定功能_第2頁
cchap4利用函數(shù)實現(xiàn)制定功能_第3頁
cchap4利用函數(shù)實現(xiàn)制定功能_第4頁
cchap4利用函數(shù)實現(xiàn)制定功能_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、cchap4利用函數(shù)實現(xiàn)制定功能1. 為什么需要函數(shù)函數(shù)的作用就是:使人把相對獨立的某個功能抽象出來,使之成為一個獨立的實體。無論將一個程序劃分為多少個程序模塊即函數(shù),只能有一個main函數(shù),程序運行總是從main函數(shù)開場到main函數(shù)完畢。21. 為什么需要函數(shù)函數(shù)包括兩種:內(nèi)置函數(shù)和自定義函數(shù):例如,頭文件里邊的函數(shù)都是內(nèi)置函數(shù),你指定了頭文件就可以直接調(diào)用;自定義函數(shù)需要你自己完成函數(shù)定義,函數(shù)申明,函數(shù)調(diào)用。在實際應(yīng)用中,主函數(shù)寫的很簡單,它的作用就是調(diào)用各個函數(shù),程序各局部功能都是由各個函數(shù)實現(xiàn)的。31. 為什么需要函數(shù)為什么要使用函數(shù)?1防止重復(fù)的編程。2使程序更加模塊化,便于閱讀

2、、修改。注意:所編寫的函數(shù)應(yīng)盡量少與主調(diào)函數(shù)發(fā)生聯(lián)絡(luò),這樣便于移植。參數(shù)(多個)函數(shù)值(唯一)函數(shù)體4if(ab) c=a;else c=b;舉例: 找出兩個數(shù)的最大數(shù)void main( ) int a,b,c; cinab; coutcy) z=x;else z=y;52. 定義函數(shù)的一般形式C+語言中,函數(shù)定義格式: (形參表) 函數(shù)體 有兩種:外部函數(shù)extern通常被缺省內(nèi)部函數(shù)static可以是C+中允許出現(xiàn)的各種類型,如:根本類型、構(gòu)造變量和對象、指針和引用void等命名規(guī)那么同標(biāo)識符可以是一個或多個參數(shù),參數(shù)之間逗號分割,每個參數(shù)要給出參數(shù)名和類型說明函數(shù)的定義包括兩局部:函數(shù)

3、頭和函數(shù)體6double max(double x, double y) double z; z=(xy)? x : y ; return z; void main (void) double a,b, c; cinab; c=max (a , b) ; cout“The max iscendl; 被調(diào)函數(shù)先定義定義之后再調(diào)用形參必須說明參數(shù)類型實參傳遞的是一個詳細(xì)的值,括號中不必說明參數(shù)類型,但實參定義的類型一定和形參一致。函數(shù)設(shè)計思路73.函數(shù)參數(shù)和函數(shù)值函數(shù)參數(shù)包括:形式參數(shù)和實際參數(shù),即形參與實參。函數(shù)的值是指函數(shù)的返回值。C+語言中,假設(shè)一個函數(shù)具有返回值,那么需要在該函數(shù)體內(nèi)有如下

4、形式的返回語句: return ;83.函數(shù)參數(shù)和函數(shù)值float max(float x, float y) float z; z=(xy)? x : y ; return z; void main (void) float a,b, c; cinab; c=max (a , b) ; cout“The max iscab; c=max(a ,b); cout“The max iscy)?x:y; return z;控制轉(zhuǎn)移控制歸還調(diào)用函數(shù)函數(shù)調(diào)用執(zhí)行過程最后執(zhí)行輸出語句134.函數(shù)調(diào)用參數(shù)傳遞函數(shù)調(diào)用的方式: 作為語句 printstar( ); 作為表達式 c=max(a,b); 作為另

5、一個函數(shù)的參數(shù) max(a,max(b,c);144.函數(shù)調(diào)用參數(shù)傳遞函數(shù)調(diào)用時,將實參的值傳遞給被調(diào)用函數(shù)形參的過程,稱為函數(shù)的參數(shù)傳遞。 函數(shù)參數(shù)的傳遞方式:按值傳遞按地址傳遞按引用傳遞15按值傳遞傳值調(diào)用 方式:函數(shù)調(diào)用時,為形參分配單元,并將實參的值復(fù)制到形參中。調(diào)用完畢,形參單元被釋放,實參單元仍保存并維持原值。特點:形參與實參占用不同的內(nèi)存單元單向傳遞4.函數(shù)調(diào)用參數(shù)傳遞int max (int x,int y) int z; z=(xy)? x : y ; return z; void main (void ) int a,b,c; cinab; c=max (a , b) ;

6、cout“The max is cendl; ab23c3xy23z3此函數(shù)有返回值17例如include “iostream.hvoid xy(int x,int y) x=x*y; y=y-x;void main() int a,b; a=10,b=20; xy(a,b); cout“a a“ b=“bendl;輸出:a=10 b=20 x=10y=20運算后:x=200y=-180此函數(shù)無返回值按地址傳遞傳址調(diào)用 方式:函數(shù)調(diào)用時,將數(shù)據(jù)的存儲地址作為參數(shù)傳遞給形參。特點:形參與實參占用同樣的存儲單元“雙向傳遞實參和形參必須是地址值4.函數(shù)調(diào)用參數(shù)傳遞4.函數(shù)調(diào)用參數(shù)傳遞第一種情況:變量

7、的地址作為實參傳遞給被調(diào)用函數(shù)的形參,此時形參一定是指針來接收地址值。20include “iostreamusing namespace std;void xy(int *x,int *y) *x=(*x)*(*y); *y=(*y)-(*x);void main() int a,b; a=10,b=20; xy(&a,&b); cout“aa“ b=“bendl;返回a10 xb20y200-180輸出:a=200 b=-180214.函數(shù)調(diào)用參數(shù)傳遞第二種情況:數(shù)組名作為實參,此時被調(diào)用的函數(shù)形參可以是數(shù)組名,也可以是指針,此時函數(shù)傳遞的是數(shù)組在內(nèi)存中的首地址,當(dāng)實參中的數(shù)組地址傳到形參

8、中,實參形參共用同一段內(nèi)存。注意:在C+中,數(shù)組名被認(rèn)為是數(shù)組在內(nèi)存中存放的首地址。22void fun(int a2) for(int i=0;i2;i+) ai=ai*ai; void main(void) int b2=2,4; coutb0tb1endl; fun(b); coutb0tb1endl;24b0b1a0a1ba416當(dāng)i=0時,完成a0=a0*a0當(dāng)i=1時,完成a1=a1*a1實參、形參均用數(shù)組實參、形參均用數(shù)組#include void fun(int b8,int n) for(int i=0;in-1;i+) b7+=bi;void main()static in

9、t a8=1,3,5,7,9,11,13; int m=8; fun(a,m); couta7endl;1357911130b0b1b2b3b4b5b6b7a0a1a2a3a4a5a6a7ba14運行結(jié)果?494.函數(shù)調(diào)用參數(shù)傳遞#include using namespace std;void fun(int *pa,int n) for(int i=0;in-1;i+) *(pa+7)+=*(pa+i);void main() int a8=1,3,5,7,9,11,13; int m=8; fun(a,m); couta7endl;用指針變量作函數(shù)形參接收數(shù)組地址1357911130pa

10、0pa1pa2pa3pa4pa5pa6pa7a0a1a2a3a4a5a6a7papa+1pa+2Pa+725練習(xí):方法2:用數(shù)組264.函數(shù)調(diào)用參數(shù)傳遞按引用傳遞引用作為函數(shù)參數(shù)由于引用就是給一個變量起別名,所以,當(dāng)使用引用作函數(shù)的參數(shù)時,就是將實參變量名賦給形參引用,形參名就等同實參變量名。特點:“雙向傳遞實參和形參就是同一變量27include void xy(int &x,int &y) x=x*y; y=y-x;void main() int a,b; a=10,b=20; xy(a,b); cout“aa“ b=“bendl;返回相當(dāng)于 int &x=ax是a的別名相對于 int &

11、y=by是b的別名x10ay20b200-180輸出:a=200 b=-180281.void main(void ) printstar ( ); print_message ( ); printstar( );void printstar (void ) cout“* * * * * * * * * * *n; void print_message (void) cout“ How do you do! n; 練習(xí)運行結(jié)果?292.void fun(int a, int b) a=a*10; b=b+a; coutatbendl;void main(void) int a=2, b=3;

12、fun(a,b); coutatbendl;練習(xí)ab23ab23202320 232 330練習(xí):3. 求一維數(shù)組的平均值,請將程序填完好#includeusing namepace std;void main() int i, a10; float , mv; for(i=0;i ; mv=mean( ); coutmvendl;float mean(int d10) int i; float avg=0.0; for(i=0;i10;i+) avg+= ; avg/=10; return avg ;aiiadi31int prime(int x)for(int i=2;ix/2;i+) i

13、f(x%i=0) return 0; return 1;void main(void) for(int i=100;i=200; i+) if(prime(i)=1) coutit; 練習(xí)4.計算100200之間的素數(shù),用函數(shù)prime( )判斷一個數(shù)是否是素數(shù),假設(shè)是該函數(shù)返回1,否那么返回0。32int gys(int a, int b) int r; if(axy; coutgys(x,y)endl;33練習(xí)6.數(shù)組元素作函數(shù)實參,用法與一般變量作實參一樣,是“值傳遞。例如:有兩個數(shù)據(jù)系列分別為:int a8=26,1007,956,705,574,371,416,517;int b8=

14、994,631,772,201,262,763,1000,781;求第三個數(shù)據(jù)系列 c ,要求c中的數(shù)據(jù)是a b中對應(yīng)數(shù)的最大數(shù)。 34int max(int m,int n) int r; if(mn) r=m; m=n; n=r; return m;void main(void) int a8=26,1007,956,705,574,371,416,517; int b8=994,631,772,201,262,763,1000,781; int c8; for(int i=0;i8;i+) ci=max(ai,bi);/對應(yīng)元素的最大數(shù) for(i=0;i8;i+)coutcit; co

15、utendl;35float average (float array ) int i; float aver, sum=array0; for (i=1; i10; i+) sum=sum+arrayi; aver=sum/10; return aver;void main(void) static float score10=100,90,45,63,69,78,95,74.69,61; float aver; aver=average(score); cout“aver=“avern;有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,求平均成績數(shù)組名作為形參,與實參數(shù)組共占單元數(shù)組名作為實參,地址值傳

16、給形參數(shù)組36score8score6score4score2score0array8array6array4array2array0scorearray37練習(xí)例5.12 一個班有n個學(xué)生,需要將每個學(xué)生的簡單資料姓名和學(xué)號輸入計算機保存,然后可以通過輸入某一個學(xué)生的姓名查找其有關(guān)資料。當(dāng)輸入一個學(xué)生姓名后,程序就查找該班中有無此學(xué)生,假設(shè)有,那么輸出他的姓名和學(xué)號,假設(shè)查找不到,那么輸出“本班無此人。38練習(xí)設(shè)計思想 .調(diào)用求平均值函數(shù)average(數(shù)組名) 調(diào)用求最高成績函數(shù)max(數(shù)組名) 調(diào)用求最低成績函數(shù)min(數(shù)組名)調(diào)用統(tǒng)計各分?jǐn)?shù)段人數(shù)函數(shù)count (數(shù)組名)主函數(shù)調(diào)用求平

17、均值函數(shù)average(數(shù)組名) .求平均值調(diào)用統(tǒng)計各分?jǐn)?shù)段人數(shù)函數(shù)count (數(shù)組名)統(tǒng)計個分?jǐn)?shù)段人數(shù)39#include #include using namespace std;int main()void input_data(string name50,string num50,int n); void search(string find_name,string name50,string num50 , int n); string find_name; string name50,num50; int n; coutn; input_data(name,num,n); cou

18、tfind_name; search(find_name,name,num,n); return 0;void input_data(string name50, string num50,int n) int i; for (i=0;in;i+) coutinput name and number of student i+1nameinumi; 41void search(string find_name,string name50,string num50, int n)int i; bool flag=false; for(i=0;in;i+) if(namei=find_name)

19、coutnamei numiendl; flag=true; break; if(flag=false) coutcant find this name;42運行結(jié)果:435. 函數(shù)的嵌套調(diào)用自學(xué)嵌套調(diào)用:一個函數(shù)調(diào)用另一個函數(shù)時,被調(diào)用函數(shù)又調(diào)用了其它函數(shù)。C+語言規(guī)定:C 函數(shù)不允許嵌套定義,但允許嵌套調(diào)用。445. 函數(shù)的嵌套調(diào)用自學(xué)int max ( int a, int b) int c; int min ( int a, int b) return ( ab? a : b); 嵌套定義 不允許,錯455. 函數(shù)的嵌套調(diào)用自學(xué)調(diào)用 b 函數(shù)a 函數(shù)b 函數(shù)main 函數(shù)調(diào)用 a 函數(shù)

20、結(jié)束(2)(3)(4)(5)(6)(7)(8)(9)a函數(shù)結(jié)束b函數(shù)結(jié)束在main函數(shù)中調(diào)用a函數(shù),在a函數(shù)中又調(diào)用b函數(shù)嵌套調(diào)用46例如:求1K+2K+3K+NK 的和int power(int m,int n)/mn int i,product=m; for(i=1;in;i+) product=product*m; return product;int sum_of_power(int n,int k)/nk的累加和 int i,sum=0; for(i=1;imk; coutsum_of_power(m,k)1)496.遞歸調(diào)用自學(xué)遞歸調(diào)用的過程“遞推階段:現(xiàn)將原問題不斷分解為新的子問

21、題,逐漸地從未知向的方向推測,最后到達的條件,即遞歸完畢條件。“回歸階段:該階段從條件出發(fā),按遞推的逆過程,逐一求值回歸,最后到達遞推的開場處,完畢回歸階段,完成遞歸調(diào)用。506.遞歸調(diào)用自學(xué)實現(xiàn)遞歸調(diào)用的方法 求n!float fac (int n) float y; if (n= =0)| (n= =1) y=1; else y=n*fac(n-1); return y;void main (void) float y; int n; coutn ; coutn“!=fac(n)endl;遞歸完畢條件進展遞歸調(diào)用516.遞歸調(diào)用自學(xué)遞歸調(diào)用的過程2!=2* 1!3!=3*2!1!=13!=

22、62!=2第一階段“遞推第二階段“回推條件,即“遞推完畢條件526.遞歸調(diào)用自學(xué)fac (3)n=3y=3*fac (2)fac (2)n=2y=2*fac (1)fac (1)n=1y=1return yreturn yy=2return yy=6536.遞歸調(diào)用自學(xué)int sub(int);void main (void) int i=5; coutsub(i)endl;int sub (int n ) int a; if (n= =1) return 1; a=n+sub(n-1); return a;結(jié)果是:?15546.遞歸調(diào)用自學(xué)void recur(char c) coutc;

23、if(c5) recur(c+1); cout=10) f(n/10); coutnendl;void main(void) f(123);結(jié)果是:112123567.內(nèi)置函數(shù)函數(shù)調(diào)用時需要做的工作:執(zhí)行調(diào)用函數(shù)之前的語句執(zhí)行調(diào)用函數(shù)a的語句時,要記下剛剛執(zhí)行的指令地址,保護現(xiàn)場信息,以便函數(shù)返回之后繼續(xù)執(zhí)行。之后程序運行轉(zhuǎn)到a函數(shù),同時進展參數(shù)傳遞執(zhí)行被調(diào)用函數(shù)aa函數(shù)執(zhí)行完,需要返回到先前記下的地址處,并根據(jù)記憶的信息“恢復(fù)現(xiàn)場,繼續(xù)執(zhí)行主函數(shù)中未執(zhí)行的語句,直到完畢結(jié)論:調(diào)用函數(shù)需要花費一定的時間,假設(shè)頻繁調(diào)用一個函數(shù),會花費更長的時間,這樣會降低程序執(zhí)行的效率。577.內(nèi)置函數(shù)內(nèi)置函數(shù)

24、也稱內(nèi)聯(lián)函數(shù),其引入的原因是:減小函數(shù)的頻繁調(diào)用次數(shù),進步程序的運行效率在遇到調(diào)用內(nèi)聯(lián)函數(shù)的地方,用函數(shù)體中的代碼來交換函數(shù)的調(diào)用運行機制與宏定義類似587.內(nèi)置函數(shù)內(nèi)聯(lián)函數(shù)的定義方法inline 函數(shù)類型 函數(shù)名(參數(shù)表)函數(shù)體關(guān)鍵字596.內(nèi)置函數(shù)#include inline int cube_int(int n); void main() for(int i(1);i=5;i+) int p=cube_int(i);couti*;couti*;couti=px;/輸入2coutsin(x,x)endl;coutsin(x,10)endl; 1. 參數(shù)類型上不同的重載函數(shù)sin(x,x)

25、sin(x,10)結(jié)果:?657.函數(shù)的重載#include using namespace std;void print(int);void print(double);void main() print(8); print(A); print(2.987); print(12.78f); print(int)3.876);void print(int n) coutn*nendl; void print(double n) coutn+nendl; 例如:運行結(jié)果644225966#includeiostream.h#includemath.hint add(int a,int b,int

26、 c) return a+b+c; int add(int a,int b) return a+b; void main(void) cout3+5=add(3,5)endl; cout3+5+8=add(3,5,8)endl; 2. 參數(shù)個數(shù)上不同的重載函數(shù)3個參數(shù)2個參數(shù)結(jié)果:3+5=83+5+8=1667#include using namespace std;int main()int max(int a,int b); double max(double a,double b,double c); int i1,i2,i; cini1i2; i=max(i1,i2); couti_m

27、ax=id1d2d3; d=max(d1,d2,d3); coutd_max=da) a=b; return a;double max(double a,double b,double c)if(ba) a=b; if(ca) a=c; return a;689.函數(shù)的模板函數(shù)重載實現(xiàn)了函數(shù)名多用,但在程序中,仍然需要分別定義每個函數(shù),盡管每個函數(shù)的函數(shù)體根本類似。函數(shù)模板是指建立一個通用函數(shù),其函數(shù)類型和形參類型不詳細(xì)指定,用一個虛擬的類型來代表,這個通用函數(shù)稱為函數(shù)模板。699.函數(shù)的模板但凡函數(shù)體一樣的函數(shù)都可以用定義的模板來代替。定義函數(shù)模板的一般形式:template 通用函數(shù)定義或

28、template 通用函數(shù)定義70int main()int i1=185,i2=-76,i3=567,i; double d1=56.87,d2=90.23,d3=-3214.76,d; long g1=67845,g2=-912456,g3=673456,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); couti_max=iendl; coutd_max=dendl; coutg_max=gendl; return 0;#include using namespace std;template T max(T a,T b,T c)

29、if(ba) a=b; if(ca) a=c; return a;調(diào)用函數(shù)時,編譯系統(tǒng)自動將函數(shù)名max與模板max相匹配,將實參類型取代模擬類型T結(jié)果:i_max=567g_max=6734567110.有默認(rèn)參數(shù)的函數(shù)一般情況下,在函數(shù)調(diào)用時,形參從實參那里獲得值,因此實參的個數(shù)要和形參一樣。但有時需要對同一個函數(shù)實現(xiàn)屢次調(diào)用,每次調(diào)用需要傳遞一樣的參數(shù),為了方便、靈敏,C+提供了帶有默認(rèn)參數(shù)的函數(shù)。7210.有默認(rèn)參數(shù)的函數(shù)在函數(shù)定義或函數(shù)原型說明時,在函數(shù)的形式參數(shù)表中,給假設(shè)干個形式參數(shù)規(guī)定默認(rèn)值,那么稱這些參數(shù)為默認(rèn)參數(shù),又稱可選參數(shù)。 使用原那么:函數(shù)調(diào)用時,假設(shè)不給出實參,那么

30、取默認(rèn)值作為實參值。7310.有默認(rèn)參數(shù)的函數(shù)例如int s(int i1,int j2) return i+j;void main( ) couts=s(2,2)endl; couts=s( )endl; 運行結(jié)果s=4s=3給實參了,就用實參值沒有給實參,就用默認(rèn)參數(shù)值74例:分析以下程序的輸出結(jié)果。#include void fun(int a=1,int b=2,int c=3)couta=a,;coutb=b,;coutc=c;coutendl;void main( )fun();fun(9);fun(4,5);fun(7,8,9);運行結(jié)果a=1,b=2,c=3a=9,b=2,c=

31、3a=4,b=5,c=3a=7,b=8,c=9 第1次調(diào)用沒有參數(shù)使用默認(rèn)值第2次調(diào)用1個參數(shù),將9賦給a,其他變量用默認(rèn)值第3次調(diào)用2個參數(shù),將4賦給a,5賦給b,c變量用默認(rèn)值第4次調(diào)用3個參數(shù),分別賦給a,b,c75默認(rèn)參數(shù)說明:假設(shè)函數(shù)有多個參數(shù),那么具有默認(rèn)值的參數(shù)必須排在那些沒有默認(rèn)值的參數(shù)的右邊。即默認(rèn)值的指定,必須從參數(shù)表的右邊開場,指定默認(rèn)值的參數(shù)右邊不允許有沒指定的參數(shù)默認(rèn)值。10.有默認(rèn)參數(shù)的函數(shù)int s(int i,int j2) return i+j; void main( ) couts=s(2,2)endl; couts=s(1)endl; 運行結(jié)果s=4s=3

32、默認(rèn)參數(shù)說明: 當(dāng)函數(shù)的多個參數(shù)具有默認(rèn)值時,調(diào)用函數(shù)所給的實在參數(shù)與形式參數(shù)匹配是按照從左到右的順序進展,沒有給定的實參,那么使用函數(shù)的默認(rèn)值。10.有默認(rèn)參數(shù)的函數(shù)#include int s(int i=1,int j=2,int k=3) return i+j+k; void main( ) couts=s()endl; couts=s(2,2)endl; couts=s(2,2,2)endl; 運行結(jié)果s=6s=7s=678默認(rèn)參數(shù)說明: 當(dāng)函數(shù)需要原型說明時,默認(rèn)的參數(shù)值應(yīng)設(shè)置在函數(shù)原型說明中,不應(yīng)在函數(shù)定義中設(shè)置;假設(shè)沒有函數(shù)原型說明,那么參數(shù)默認(rèn)值可在定義中設(shè)置。 函數(shù)原型說明

33、可以說明屢次,也可以在各個函數(shù)原型中設(shè)置不同的參數(shù)具有默認(rèn)值。10.有默認(rèn)參數(shù)的函數(shù)例如#include void main( ) int s(int i=1,int j=2,int k=3 ); couts=s()endl; couts=s(2,2)endl; couts=s(2,2,2)endl; int s(int i=2,int j=3,int k=4); couts=s()endl; couts=s(2,2)endl; couts=s(2,2,2)endl; int s(int i,int j,int k) return i+j+k; 運行結(jié)果s=6s=7s=6s=9s=8s=6函數(shù)

34、原型說明函數(shù)原型說明801.定義一個void型函數(shù)意味著該函數(shù)運行后A通過return返回一個用戶所希望的函數(shù)值B返回一個系統(tǒng)默認(rèn)值C沒有返回值D返回一個不確定的值練習(xí)812.運行結(jié)果是?#include void fun(int a=4,int b=12,int c=13) couta,b,cendl;void main( ) fun(8); 練習(xí)823.運行結(jié)果是?int m (int x,int y) int z; z=(xy)? x : y ; return z; void main (void ) int a=6,b=4,c; c=m (a , b) ; coutcendl; 練習(xí)8

35、34. 運行結(jié)果是?#includeiostream.h#includemath.hint add(int a,int b,int c) return a+b+c; int add(int a,int b) return a+b; void main(void) coutadd(3,5)“ ; coutadd(3,5,8)endl; 練習(xí)84當(dāng)變量在整個程序執(zhí)行過程中均有效時,我們稱之為全局變量。全局變量只能在所有函數(shù)體之外定義。只能在函數(shù)體內(nèi)部起作用,出了函數(shù)體范圍就不起作用的變量我們稱之為局部變量。局部變量只能在函數(shù)體內(nèi)部定義。11.局部變量與全局變量自學(xué)int global;/全局變量

36、int main() int local;/局部變量 return 0; 85(1) 局部變量局部變量的分類:動態(tài)變量auto:默認(rèn),存儲在動態(tài)區(qū)存放器變量register:在cpu內(nèi)部存儲靜態(tài)局部變量static:存儲在靜態(tài)區(qū)11.局部變量與全局變量自學(xué)86動態(tài)局部變量未被賦值時,其值為隨機值。其作用域的函數(shù)或復(fù)合語句完畢時,空間被程序收回。程序執(zhí)行到靜態(tài)局部變量時,為其在靜態(tài)區(qū)開拓存儲空間,該空間一直被保存,直到程序運行完畢。由于存儲在靜態(tài)區(qū),靜態(tài)局部變量或全局變量未賦初值時,系統(tǒng)自動使之為0。11.局部變量與全局變量自學(xué)int fun(int a) int c; int b=3; c=a

37、+ b+; return c;void main(void) int x=2, y; y=fun(x); coutyendl; y=fun(x+3); coutyendl;動態(tài)局部變量x2ya2b3c54555888輸出:變量b是動態(tài)局部變量,一旦分開其所在的函數(shù),就會釋放存儲空間,數(shù)據(jù)伴隨消失。34int fun(int a) int c; static int b=3; c=a+ b+; return c;void main(void) int x=2, y; y=fun(x); coutyendl; y=fun(x+3); coutyendl;只賦一次初值x2ya2b3c5455a5c599輸出:變量b是靜態(tài)局部變量,在內(nèi)存一旦開拓空間,就不會釋放,空間值一直保存直到整個程序完畢9int f (int a

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論