版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、cchap4利用函數(shù)實(shí)現(xiàn)制定功能1. 為什么需要函數(shù)函數(shù)的作用就是:使人把相對(duì)獨(dú)立的某個(gè)功能抽象出來(lái),使之成為一個(gè)獨(dú)立的實(shí)體。無(wú)論將一個(gè)程序劃分為多少個(gè)程序模塊即函數(shù),只能有一個(gè)main函數(shù),程序運(yùn)行總是從main函數(shù)開(kāi)場(chǎng)到main函數(shù)完畢。21. 為什么需要函數(shù)函數(shù)包括兩種:內(nèi)置函數(shù)和自定義函數(shù):例如,頭文件里邊的函數(shù)都是內(nèi)置函數(shù),你指定了頭文件就可以直接調(diào)用;自定義函數(shù)需要你自己完成函數(shù)定義,函數(shù)申明,函數(shù)調(diào)用。在實(shí)際應(yīng)用中,主函數(shù)寫(xiě)的很簡(jiǎn)單,它的作用就是調(diào)用各個(gè)函數(shù),程序各局部功能都是由各個(gè)函數(shù)實(shí)現(xiàn)的。31. 為什么需要函數(shù)為什么要使用函數(shù)?1防止重復(fù)的編程。2使程序更加模塊化,便于閱讀
2、、修改。注意:所編寫(xiě)的函數(shù)應(yīng)盡量少與主調(diào)函數(shù)發(fā)生聯(lián)絡(luò),這樣便于移植。參數(shù)(多個(gè))函數(shù)值(唯一)函數(shù)體4if(ab) c=a;else c=b;舉例: 找出兩個(gè)數(shù)的最大數(shù)void main( ) int a,b,c; cinab; coutcy) z=x;else z=y;52. 定義函數(shù)的一般形式C+語(yǔ)言中,函數(shù)定義格式: (形參表) 函數(shù)體 有兩種:外部函數(shù)extern通常被缺省內(nèi)部函數(shù)static可以是C+中允許出現(xiàn)的各種類型,如:根本類型、構(gòu)造變量和對(duì)象、指針和引用void等命名規(guī)那么同標(biāo)識(shí)符可以是一個(gè)或多個(gè)參數(shù),參數(shù)之間逗號(hào)分割,每個(gè)參數(shù)要給出參數(shù)名和類型說(shuō)明函數(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)用形參必須說(shuō)明參數(shù)類型實(shí)參傳遞的是一個(gè)詳細(xì)的值,括號(hào)中不必說(shuō)明參數(shù)類型,但實(shí)參定義的類型一定和形參一致。函數(shù)設(shè)計(jì)思路73.函數(shù)參數(shù)和函數(shù)值函數(shù)參數(shù)包括:形式參數(shù)和實(shí)際參數(shù),即形參與實(shí)參。函數(shù)的值是指函數(shù)的返回值。C+語(yǔ)言中,假設(shè)一個(gè)函數(shù)具有返回值,那么需要在該函數(shù)體內(nèi)有如下
4、形式的返回語(yǔ)句: 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í)行過(guò)程最后執(zhí)行輸出語(yǔ)句134.函數(shù)調(diào)用參數(shù)傳遞函數(shù)調(diào)用的方式: 作為語(yǔ)句 printstar( ); 作為表達(dá)式 c=max(a,b); 作為另
5、一個(gè)函數(shù)的參數(shù) max(a,max(b,c);144.函數(shù)調(diào)用參數(shù)傳遞函數(shù)調(diào)用時(shí),將實(shí)參的值傳遞給被調(diào)用函數(shù)形參的過(guò)程,稱為函數(shù)的參數(shù)傳遞。 函數(shù)參數(shù)的傳遞方式:按值傳遞按地址傳遞按引用傳遞15按值傳遞傳值調(diào)用 方式:函數(shù)調(diào)用時(shí),為形參分配單元,并將實(shí)參的值復(fù)制到形參中。調(diào)用完畢,形參單元被釋放,實(shí)參單元仍保存并維持原值。特點(diǎn):形參與實(shí)參占用不同的內(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運(yùn)算后:x=200y=-180此函數(shù)無(wú)返回值按地址傳遞傳址調(diào)用 方式:函數(shù)調(diào)用時(shí),將數(shù)據(jù)的存儲(chǔ)地址作為參數(shù)傳遞給形參。特點(diǎn):形參與實(shí)參占用同樣的存儲(chǔ)單元“雙向傳遞實(shí)參和形參必須是地址值4.函數(shù)調(diào)用參數(shù)傳遞4.函數(shù)調(diào)用參數(shù)傳遞第一種情況:變量
7、的地址作為實(shí)參傳遞給被調(diào)用函數(shù)的形參,此時(shí)形參一定是指針來(lái)接收地址值。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ù)組名作為實(shí)參,此時(shí)被調(diào)用的函數(shù)形參可以是數(shù)組名,也可以是指針,此時(shí)函數(shù)傳遞的是數(shù)組在內(nèi)存中的首地址,當(dāng)實(shí)參中的數(shù)組地址傳到形參
8、中,實(shí)參形參共用同一段內(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時(shí),完成a0=a0*a0當(dāng)i=1時(shí),完成a1=a1*a1實(shí)參、形參均用數(shù)組實(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運(yùn)行結(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ù)由于引用就是給一個(gè)變量起別名,所以,當(dāng)使用引用作函數(shù)的參數(shù)時(shí),就是將實(shí)參變量名賦給形參引用,形參名就等同實(shí)參變量名。特點(diǎn):“雙向傳遞實(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的別名相對(duì)于 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í)運(yùn)行結(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ù)組的平均值,請(qǐng)將程序填完好#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.計(jì)算100200之間的素?cái)?shù),用函數(shù)prime( )判斷一個(gè)數(shù)是否是素?cái)?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í)參,用法與一般變量作實(shí)參一樣,是“值傳遞。例如:有兩個(gè)數(shù)據(jù)系列分別為:int a8=26,1007,956,705,574,371,416,517;int b8=
14、994,631,772,201,262,763,1000,781;求第三個(gè)數(shù)據(jù)系列 c ,要求c中的數(shù)據(jù)是a b中對(duì)應(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);/對(duì)應(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;有一個(gè)一維數(shù)組,內(nèi)放10個(gè)學(xué)生成績(jī),求平均成績(jī)數(shù)組名作為形參,與實(shí)參數(shù)組共占單元數(shù)組名作為實(shí)參,地址值傳
16、給形參數(shù)組36score8score6score4score2score0array8array6array4array2array0scorearray37練習(xí)例5.12 一個(gè)班有n個(gè)學(xué)生,需要將每個(gè)學(xué)生的簡(jiǎn)單資料姓名和學(xué)號(hào)輸入計(jì)算機(jī)保存,然后可以通過(guò)輸入某一個(gè)學(xué)生的姓名查找其有關(guān)資料。當(dāng)輸入一個(gè)學(xué)生姓名后,程序就查找該班中有無(wú)此學(xué)生,假設(shè)有,那么輸出他的姓名和學(xué)號(hào),假設(shè)查找不到,那么輸出“本班無(wú)此人。38練習(xí)設(shè)計(jì)思想 .調(diào)用求平均值函數(shù)average(數(shù)組名) 調(diào)用求最高成績(jī)函數(shù)max(數(shù)組名) 調(diào)用求最低成績(jī)函數(shù)min(數(shù)組名)調(diào)用統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)函數(shù)count (數(shù)組名)主函數(shù)調(diào)用求平
17、均值函數(shù)average(數(shù)組名) .求平均值調(diào)用統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)函數(shù)count (數(shù)組名)統(tǒng)計(jì)個(gè)分?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運(yùn)行結(jié)果:435. 函數(shù)的嵌套調(diào)用自學(xué)嵌套調(diào)用:一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí),被調(diào)用函數(shù)又調(diào)用了其它函數(shù)。C+語(yǔ)言規(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); 嵌套定義 不允許,錯(cuò)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)用的過(guò)程“遞推階段:現(xiàn)將原問(wèn)題不斷分解為新的子問(wèn)
21、題,逐漸地從未知向的方向推測(cè),最后到達(dá)的條件,即遞歸完畢條件。“回歸階段:該階段從條件出發(fā),按遞推的逆過(guò)程,逐一求值回歸,最后到達(dá)遞推的開(kāi)場(chǎng)處,完畢回歸階段,完成遞歸調(diào)用。506.遞歸調(diào)用自學(xué)實(shí)現(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;遞歸完畢條件進(jìn)展遞歸調(diào)用516.遞歸調(diào)用自學(xué)遞歸調(diào)用的過(guò)程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)用時(shí)需要做的工作:執(zhí)行調(diào)用函數(shù)之前的語(yǔ)句執(zhí)行調(diào)用函數(shù)a的語(yǔ)句時(shí),要記下剛剛執(zhí)行的指令地址,保護(hù)現(xiàn)場(chǎng)信息,以便函數(shù)返回之后繼續(xù)執(zhí)行。之后程序運(yùn)行轉(zhuǎn)到a函數(shù),同時(shí)進(jìn)展參數(shù)傳遞執(zhí)行被調(diào)用函數(shù)aa函數(shù)執(zhí)行完,需要返回到先前記下的地址處,并根據(jù)記憶的信息“恢復(fù)現(xiàn)場(chǎng),繼續(xù)執(zhí)行主函數(shù)中未執(zhí)行的語(yǔ)句,直到完畢結(jié)論:調(diào)用函數(shù)需要花費(fèi)一定的時(shí)間,假設(shè)頻繁調(diào)用一個(gè)函數(shù),會(huì)花費(fèi)更長(zhǎng)的時(shí)間,這樣會(huì)降低程序執(zhí)行的效率。577.內(nèi)置函數(shù)內(nèi)置函數(shù)
24、也稱內(nèi)聯(lián)函數(shù),其引入的原因是:減小函數(shù)的頻繁調(diào)用次數(shù),進(jìn)步程序的運(yùn)行效率在遇到調(diào)用內(nèi)聯(lián)函數(shù)的地方,用函數(shù)體中的代碼來(lái)交換函數(shù)的調(diào)用運(yùn)行機(jī)制與宏定義類似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; 例如:運(yùn)行結(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ù)個(gè)數(shù)上不同的重載函數(shù)3個(gè)參數(shù)2個(gè)參數(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ù)重載實(shí)現(xiàn)了函數(shù)名多用,但在程序中,仍然需要分別定義每個(gè)函數(shù),盡管每個(gè)函數(shù)的函數(shù)體根本類似。函數(shù)模板是指建立一個(gè)通用函數(shù),其函數(shù)類型和形參類型不詳細(xì)指定,用一個(gè)虛擬的類型來(lái)代表,這個(gè)通用函數(shù)稱為函數(shù)模板。699.函數(shù)的模板但凡函數(shù)體一樣的函數(shù)都可以用定義的模板來(lái)代替。定義函數(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ù)時(shí),編譯系統(tǒng)自動(dòng)將函數(shù)名max與模板max相匹配,將實(shí)參類型取代模擬類型T結(jié)果:i_max=567g_max=6734567110.有默認(rèn)參數(shù)的函數(shù)一般情況下,在函數(shù)調(diào)用時(shí),形參從實(shí)參那里獲得值,因此實(shí)參的個(gè)數(shù)要和形參一樣。但有時(shí)需要對(duì)同一個(gè)函數(shù)實(shí)現(xiàn)屢次調(diào)用,每次調(diào)用需要傳遞一樣的參數(shù),為了方便、靈敏,C+提供了帶有默認(rèn)參數(shù)的函數(shù)。7210.有默認(rèn)參數(shù)的函數(shù)在函數(shù)定義或函數(shù)原型說(shuō)明時(shí),在函數(shù)的形式參數(shù)表中,給假設(shè)干個(gè)形式參數(shù)規(guī)定默認(rèn)值,那么稱這些參數(shù)為默認(rèn)參數(shù),又稱可選參數(shù)。 使用原那么:函數(shù)調(diào)用時(shí),假設(shè)不給出實(shí)參,那么
30、取默認(rèn)值作為實(shí)參值。7310.有默認(rèn)參數(shù)的函數(shù)例如int s(int i1,int j2) return i+j;void main( ) couts=s(2,2)endl; couts=s( )endl; 運(yùn)行結(jié)果s=4s=3給實(shí)參了,就用實(shí)參值沒(méi)有給實(shí)參,就用默認(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);運(yùn)行結(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)用沒(méi)有參數(shù)使用默認(rèn)值第2次調(diào)用1個(gè)參數(shù),將9賦給a,其他變量用默認(rèn)值第3次調(diào)用2個(gè)參數(shù),將4賦給a,5賦給b,c變量用默認(rèn)值第4次調(diào)用3個(gè)參數(shù),分別賦給a,b,c75默認(rèn)參數(shù)說(shuō)明:假設(shè)函數(shù)有多個(gè)參數(shù),那么具有默認(rèn)值的參數(shù)必須排在那些沒(méi)有默認(rèn)值的參數(shù)的右邊。即默認(rèn)值的指定,必須從參數(shù)表的右邊開(kāi)場(chǎng),指定默認(rèn)值的參數(shù)右邊不允許有沒(méi)指定的參數(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; 運(yùn)行結(jié)果s=4s=3
32、默認(rèn)參數(shù)說(shuō)明: 當(dāng)函數(shù)的多個(gè)參數(shù)具有默認(rèn)值時(shí),調(diào)用函數(shù)所給的實(shí)在參數(shù)與形式參數(shù)匹配是按照從左到右的順序進(jìn)展,沒(méi)有給定的實(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; 運(yùn)行結(jié)果s=6s=7s=678默認(rèn)參數(shù)說(shuō)明: 當(dāng)函數(shù)需要原型說(shuō)明時(shí),默認(rèn)的參數(shù)值應(yīng)設(shè)置在函數(shù)原型說(shuō)明中,不應(yīng)在函數(shù)定義中設(shè)置;假設(shè)沒(méi)有函數(shù)原型說(shuō)明,那么參數(shù)默認(rèn)值可在定義中設(shè)置。 函數(shù)原型說(shuō)明
33、可以說(shuō)明屢次,也可以在各個(gè)函數(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; 運(yùn)行結(jié)果s=6s=7s=6s=9s=8s=6函數(shù)
34、原型說(shuō)明函數(shù)原型說(shuō)明801.定義一個(gè)void型函數(shù)意味著該函數(shù)運(yùn)行后A通過(guò)return返回一個(gè)用戶所希望的函數(shù)值B返回一個(gè)系統(tǒng)默認(rèn)值C沒(méi)有返回值D返回一個(gè)不確定的值練習(xí)812.運(yùn)行結(jié)果是?#include void fun(int a=4,int b=12,int c=13) couta,b,cendl;void main( ) fun(8); 練習(xí)823.運(yùn)行結(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. 運(yùn)行結(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)變量在整個(gè)程序執(zhí)行過(guò)程中均有效時(shí),我們稱之為全局變量。全局變量只能在所有函數(shù)體之外定義。只能在函數(shù)體內(nèi)部起作用,出了函數(shù)體范圍就不起作用的變量我們稱之為局部變量。局部變量只能在函數(shù)體內(nèi)部定義。11.局部變量與全局變量自學(xué)int global;/全局變量
36、int main() int local;/局部變量 return 0; 85(1) 局部變量局部變量的分類:動(dòng)態(tài)變量auto:默認(rèn),存儲(chǔ)在動(dòng)態(tài)區(qū)存放器變量register:在cpu內(nèi)部存儲(chǔ)靜態(tài)局部變量static:存儲(chǔ)在靜態(tài)區(qū)11.局部變量與全局變量自學(xué)86動(dòng)態(tài)局部變量未被賦值時(shí),其值為隨機(jī)值。其作用域的函數(shù)或復(fù)合語(yǔ)句完畢時(shí),空間被程序收回。程序執(zhí)行到靜態(tài)局部變量時(shí),為其在靜態(tài)區(qū)開(kāi)拓存儲(chǔ)空間,該空間一直被保存,直到程序運(yùn)行完畢。由于存儲(chǔ)在靜態(tài)區(qū),靜態(tài)局部變量或全局變量未賦初值時(shí),系統(tǒng)自動(dò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;動(dòng)態(tài)局部變量x2ya2b3c54555888輸出:變量b是動(dòng)態(tài)局部變量,一旦分開(kāi)其所在的函數(shù),就會(huì)釋放存儲(chǔ)空間,數(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)存一旦開(kāi)拓空間,就不會(huì)釋放,空間值一直保存直到整個(gè)程序完畢9int f (int a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《園藝植物育種學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 語(yǔ)文情景劇主持詞
- 石河子大學(xué)《農(nóng)村公共管理》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《國(guó)際貿(mào)易實(shí)務(wù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《體驗(yàn)型交互設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《模擬電子技術(shù)》2022-2023學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《機(jī)械原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 關(guān)于山林看護(hù)合同
- 國(guó)外采購(gòu)合同
- 合同把關(guān)管理要求
- 價(jià)值流圖析講義
- (完整)交管12123學(xué)法減分考試題庫(kù)及參考答案(通用版)
- 瀝青混合料最大理論密度計(jì)算法
- 部編版小學(xué)語(yǔ)文四年級(jí)上冊(cè)第六單元教材分析解讀課件
- 第一章-馬克思主義的誕生-(《馬克思主義發(fā)展史》課件)
- SY∕T 6336-2019 沉積巖重礦物分離與鑒定方法
- STEMI溶栓流程圖(第一版)
- 小學(xué)四年級(jí)英語(yǔ)教師發(fā)言稿6篇
- x中國(guó)公司渠道連鎖管理體系框架設(shè)計(jì)方案簡(jiǎn)介課件
- 共同愿景-團(tuán)隊(duì)學(xué)習(xí)-系統(tǒng)思考培訓(xùn)課件
- 三高共管六病同防診療路徑與一體化服務(wù)指南(2022版)20-39-30
評(píng)論
0/150
提交評(píng)論