一個(gè)b程序b由多個(gè)模塊b文件b組成_第1頁
一個(gè)b程序b由多個(gè)模塊b文件b組成_第2頁
一個(gè)b程序b由多個(gè)模塊b文件b組成_第3頁
一個(gè)b程序b由多個(gè)模塊b文件b組成_第4頁
一個(gè)b程序b由多個(gè)模塊b文件b組成_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第八章函數(shù)一、概述n一個(gè)程序由多個(gè)模塊(文件)組成,每個(gè)模塊(文件)又由很多小的功能模塊(函數(shù))組成,而且這些功能模塊(函數(shù))可能在很多文件模塊中都要使用。因此,使用函數(shù)可以減少重復(fù)勞動(dòng)語句函數(shù)1函數(shù)n文件1函數(shù)1函數(shù)n文件n程序二、說明n1、C程序=多個(gè)源文件,便于分別編寫、編譯、提高效率。n2、一個(gè)源程序文件=多個(gè)函數(shù)。以源文件為單位進(jìn)行編譯。n3、在多個(gè)函數(shù)中,有且僅有一個(gè)main函數(shù),程序從main開始執(zhí)行。n4、所有函數(shù)都是平等的,可以相互調(diào)用,但是不能嵌套定義n5、函數(shù)=標(biāo)準(zhǔn)函數(shù)+用戶函數(shù)n6、函數(shù)=有參函數(shù)+無參函數(shù)3、定義函數(shù)(1)n1、無參函數(shù)nType f_Name()n函

2、數(shù)內(nèi)部變量聲明n nn如:nInt Add()nint x=2,y=3,z;n z=x+y;n return z;n3、定義函數(shù)(2)n2、有參函數(shù)nType f_Name(形參變量類型表)n 函數(shù)內(nèi)部變量聲明n nn如:int Add(int x,int y)n int z;n z=x+y;n return z;n 形參:在定義函數(shù)的時(shí)候,它的值是未知的,也就是說它只是形式上存在,并不在內(nèi)存中占用空間。如x,y4、形參的傳統(tǒng)聲明形式nType f_Name(形參變量表)n形參變量類型聲明n函數(shù)內(nèi)部變量聲明n nn如:int Add(x,y)n int x,y;n int z;n z=x+y;

3、n Return z;n 5、函數(shù)參數(shù)n在調(diào)用函數(shù)時(shí),主調(diào)函數(shù)與被調(diào)函數(shù)之間存在數(shù)據(jù)傳遞關(guān)系:n實(shí)參從主調(diào)函數(shù)傳給被調(diào)函數(shù)的形參,函數(shù)值從被調(diào)函數(shù)傳回到主調(diào)函數(shù)對(duì)應(yīng)的處。n注意:n1、形參只在進(jìn)行函數(shù)調(diào)用的時(shí)候才自動(dòng)分配內(nèi)存空間,函數(shù)調(diào)用結(jié)束后自動(dòng)釋放所占內(nèi)存空間n2、實(shí)參在任何時(shí)候都必須有實(shí)際的值,可以是常量或常量表達(dá)式n3、實(shí)參與形參的類型應(yīng)該相同或能賦值兼容n4、實(shí)參到形參是單向值傳遞,只能從實(shí)參傳到形參,形參的改變不會(huì)引起實(shí)參的改變。6、函數(shù)返回值n1、函數(shù)的返回值一般是通過return語句帶回n1)return ;結(jié)束被調(diào)函數(shù),返回到主調(diào)函數(shù),但是不傳遞回任何可用的值。(void)n

4、2)return (表達(dá)式);結(jié)束被調(diào)函數(shù),返回到主調(diào)函數(shù),并將表達(dá)式的值帶回到主調(diào)函數(shù)。n3)return 表達(dá)式;同2n2、返回值的類型n1)可以是任何合法的類型n2)。n3)如果函數(shù)類型為不寫。n4)為了明確表示不帶回值,則函數(shù)類型為7、舉例nmain()n float x,y;n int c;n scanf(%f,%f,&x,&y);n c=max(x,y);n printf(Max is %dn,c);n return ; n int max(float x,float y)n if(xy) return x;n else return (y); max(float,

5、float);main() float x,y; int c; scanf(%f,%f,&x,&y); c=max(x,y); printf(Max is %dn,c); return ; max(float x,float y) if(xy) return x; else return (y); 8、函數(shù)原型聲明n1、作用:n提前告訴系統(tǒng),程序中有這樣一個(gè)函數(shù)n2、方法:n在main函數(shù)之前,用函數(shù)聲明語句n3、形式:nType f_Name(形參類型表)9、函數(shù)調(diào)用n定義了子函數(shù),而且對(duì)子函數(shù)進(jìn)行原型聲明后,就可以調(diào)用子函數(shù)了。子函數(shù)與主函數(shù)的位置可以任意排放。n調(diào)用形式:

6、n1、如果函數(shù)類型為void,用函數(shù)調(diào)用語句:f_Name(實(shí)參表);n2、否則,將函數(shù)調(diào)用放在表達(dá)式中,或作為函數(shù)的參數(shù)。如:n d=max(a,max(b,c)/2;10、函數(shù)的嵌套調(diào)用n因?yàn)樽雍瘮?shù)之間是平等的,因此子函數(shù)之間可以相互調(diào)用。nmain()nn f1();nn f1()n n f2();n n f2()n n f1();n 11、舉例n用弦截法求f(x)=x3-5x2+16x-80=0 的根x1x2xx1、if(f(x1)*f(x2)=0)方程有根2、直線段x1x2與x軸相交于x3、if(f(x1)*f(x)=0)根在x1與x之間,x2=x,否則,根在x與x2之間,x1=x4

7、、重復(fù)2、3,直到f(x)無限接近0,即可求出x12、函數(shù)的遞歸調(diào)用n遞歸調(diào)用自己調(diào)用自己nf1()nn f1();n 13、舉例n求n!n n!=n*(n-1)!n (n-1)!=(n-1)*(n-2)!n n 1!=1*0!n 0!=1nn!=fact(n)=n*fact(n-1)=n*(n-1)*fact(n-2)14、數(shù)組作為函數(shù)參數(shù)n1、數(shù)組元素作為函數(shù)參數(shù)n數(shù)組元素相當(dāng)于與一個(gè)普通變量,因此數(shù)組元素作為函數(shù)參數(shù)與變量作為函數(shù)參數(shù)完全一樣。n見例題15、數(shù)組作為函數(shù)參數(shù)n2、數(shù)組名作為函數(shù)參數(shù)n1)數(shù)組名表示函數(shù)的起始地址,是常量n2)數(shù)組名作為函數(shù)參數(shù)是,實(shí)參的改變引起形參的改變,

8、形參的改變也會(huì)引起實(shí)參的改變。n3)數(shù)組名作為函數(shù)參數(shù),要求實(shí)參、形參都是數(shù)組,而且類型應(yīng)該一致n4)。n5)數(shù)組名作為函數(shù)參數(shù),形參數(shù)組和實(shí)參數(shù)組在同一個(gè)內(nèi)存單元。n見例題16、局部變量nInt F1(int x,int y)nint z;nnInt f2(int a,int b)nint c; nnVoid main()nint m,n; n17、全局變量nInt x,y;nInt f1(int a,int b)nint c; nnFloat z; nInt f2(int c,int d)nint e; n18、變量的類別n1、自動(dòng)變量auton變量使用結(jié)束后自動(dòng)釋放內(nèi)存空間n一般變量都是auto類型n2、靜態(tài)變量staticn變量使用結(jié)束后不釋放內(nèi)存空間,保留原值n3、寄存器變量registern將使用頻繁的變量放在寄存器中。n不能定義太多n加快程序的運(yùn)行19、外部變量n外部變量(全局變量)在函數(shù)外部定義的變量n如果外部變量前面的函數(shù)要引用該外部變量,可以用關(guān)鍵字聲明n當(dāng)多個(gè)文件組成一個(gè)程序,而文件之間要用到同一個(gè)變量的時(shí)候:20、外部函數(shù)n內(nèi)部函數(shù)一個(gè)函數(shù)只能被本文件調(diào)用,在定義和聲明的時(shí)候加上關(guān)鍵字,作用是多個(gè)文件中的同名函數(shù)不相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論