版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
函
數(shù)C語言是通過函數(shù)來實(shí)現(xiàn)模塊化程序設(shè)計(jì)的。所以較大的C語言應(yīng)用程序,往往是由多個(gè)函數(shù)組成的,每個(gè)函數(shù)分別對(duì)應(yīng)各自的功能模塊。1函數(shù)的定義任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成。根據(jù)函數(shù)是否需要參數(shù),可將函數(shù)分為無參函數(shù)和有參函數(shù)兩種。(1)無參函數(shù)的一般形式函數(shù)類型函數(shù)名(void){說明語句部分;可執(zhí)行語句部分;
}注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。但在新標(biāo)準(zhǔn)中,函數(shù)不可缺省參數(shù)表;如果不需要參數(shù),則用“void”表示,主函數(shù)main()例外。(2)有參函數(shù)的一般形式函數(shù)類型函數(shù)名(數(shù)據(jù)類型1參數(shù)1,數(shù)據(jù)類型2參數(shù)2……){說明語句部分;可執(zhí)行語句部分;
}有參函數(shù)比無參函數(shù)多了一個(gè)參數(shù)表。調(diào)用有參函數(shù)時(shí),調(diào)用函數(shù)將賦予這些參數(shù)實(shí)際的值。為了與調(diào)用函數(shù)提供的實(shí)際參數(shù)區(qū)別開,將函數(shù)定義中的參數(shù)表稱為形式參數(shù)表,簡稱形參表。定義一個(gè)函數(shù),用于求兩個(gè)數(shù)中的大數(shù)。/*功能:定義一個(gè)求較大數(shù)的函數(shù)并在主函數(shù)中調(diào)用*/intmax(intn1,intn2) /*定義一個(gè)函數(shù)max()*/{return(n1>n2?n1:n2);
}Voidmain(){intnum1,num2;
printf("inputtwonumbers:\n");
scanf("%d%d",&num1,&num2);printf("max=%d\n",max(num1,num2));}
2函數(shù)的返回值與函數(shù)類型C語言的函數(shù)兼有其它語言中的函數(shù)和過程兩種功能,從這個(gè)角度看,又可把函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩種。1.函數(shù)返回值與return語句有參函數(shù)的返回值,是通過函數(shù)中的return語句來獲得的。(1)return語句的一般格式:return(返回值表達(dá)式); (2)return語句的功能:返回調(diào)用函數(shù),并將“返回值表達(dá)式”的值帶給調(diào)用函數(shù)。注意:調(diào)用函數(shù)中無return語句,并不是不返回一個(gè)值,而是一個(gè)不確定的值。為了明確表示不返回值,可以用“void”定義成“無(空)類型”。2.函數(shù)類型在定義函數(shù)時(shí),對(duì)函數(shù)類型的說明,應(yīng)與return語句中返回值表達(dá)式的類型一致。如果不一致,則以函數(shù)類型為準(zhǔn)。如果缺省函數(shù)類型,則系統(tǒng)一律按整型處理。良好的程序設(shè)計(jì)習(xí)慣:為了使程序具有良好的可讀性并減少出錯(cuò),凡不要求返回值的函數(shù)都應(yīng)定義為空類型;即使函數(shù)類型為整型,也不使用系統(tǒng)的缺省處理。3對(duì)被調(diào)用函數(shù)的說明在調(diào)用函數(shù)的過程中,要對(duì)被調(diào)用函數(shù)進(jìn)行說明,其一般格式如下:函數(shù)類型函數(shù)名(數(shù)據(jù)類型1參數(shù)名,數(shù)據(jù)類型2參數(shù)名2…);
函數(shù)說明的2種情況1、函數(shù)定義在前,調(diào)用在后,可以不用說明。因?yàn)榫幾g系統(tǒng)已經(jīng)知道了已定義的函數(shù)類型,會(huì)根據(jù)提供的信息對(duì)函數(shù)的調(diào)用作正確性檢查;示例:打印1到5的階乘值
int
fac(intn){intf=1;f=f*n;return(f);}voidmain(){inti;for(i=1;i<=5;i++)
printf(“%d!=%d\n”,i,fac(i));}2、定義在后,調(diào)用在前時(shí)需要說明.floatadd(floatx,floaty);main(){……c=add(a,b);……}floatadd(floatx,floaty){……}4函數(shù)的調(diào)用
在程序中,是通過對(duì)函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。C語言中,函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)際參數(shù)表)
切記:實(shí)參的個(gè)數(shù)、類型和順序,應(yīng)該與被調(diào)用函數(shù)所要求的參數(shù)個(gè)數(shù)、類型和順序一致,才能正確地進(jìn)行數(shù)據(jù)傳遞。在C語言中,可以用以下幾種方式調(diào)用函數(shù):(1)函數(shù)表達(dá)式。函數(shù)作為表達(dá)式的一項(xiàng),出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。(2)函數(shù)語句。C語言中的函數(shù)可以只進(jìn)行某些操作而不返回函數(shù)值,這時(shí)的函數(shù)調(diào)用可作為一條獨(dú)立的語句。說明:(1)實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等。無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值,以便把這些值傳送給形參。(2)形參變量只有在被調(diào)用時(shí),才分配內(nèi)存單元;調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元。因此,形參只有在該函數(shù)內(nèi)有效。調(diào)用結(jié)束,返回調(diào)用函數(shù)后,則不能再使用該形參變量。(3)實(shí)參對(duì)形參的數(shù)據(jù)傳送是單向的,即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。(4)實(shí)參和形參占用不同的內(nèi)存單元,即使同名也互不影響。5函數(shù)的嵌套調(diào)用和遞歸調(diào)用1函數(shù)的嵌套調(diào)用
函數(shù)的嵌套調(diào)用是指,在執(zhí)行被調(diào)用函數(shù)時(shí),被調(diào)用函數(shù)又調(diào)用了其它函數(shù)。這與其它語言的子程序嵌套調(diào)用的情形是類似的,其關(guān)系可表示如圖7-1。2函數(shù)的遞歸調(diào)用
函數(shù)的遞歸調(diào)用是指,一個(gè)函數(shù)在它的函數(shù)體內(nèi),直接或間接地調(diào)用它自身。C語言允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,調(diào)用函數(shù)又是被調(diào)用函數(shù),執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身。每調(diào)用一次就進(jìn)入新的一層。為了防止遞歸調(diào)用無終止地進(jìn)行,必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調(diào)用,然后逐層返回。[案例]用遞歸法計(jì)算n!longpower(intn){longf;if(n>1)f=power(n-1)*n;elsef=1;return(f);}6內(nèi)部變量與外部變量
C語言中所有的變量都有自己的作用域。變量說明的位置不同,其作用域也不同,據(jù)此將C語言中的變量分為內(nèi)部變量和外部變量。在一個(gè)函數(shù)內(nèi)部說明的變量是內(nèi)部變量,它只在該函數(shù)范圍內(nèi)有效。也就是說,只有在包含變量說明的函數(shù)內(nèi)部,才能使用被說明的變量,在此函數(shù)之外就不能使用這些變量了。所以內(nèi)部變量也稱“局部變量”。例如:intf1(inta)/*函數(shù)f1*/{int
b,c;
……} /*a,b,c作用域:僅限于函數(shù)f1()中*/
intf2(intx)/*函數(shù)f2*/{int
y,z;
……} /*x,y,z作用域:僅限于函數(shù)f2()中*/
main(){int
m,n;
……} /*m,n作用域:僅限于函數(shù)main()中*/關(guān)于局部變量的作用域還要說明以下幾點(diǎn):1.主函數(shù)main()中定義的內(nèi)部變量,也只能在主函數(shù)中使用,其它函數(shù)不能使用。同時(shí),主函數(shù)中也不能使用其它函數(shù)中定義的內(nèi)部變量。因?yàn)橹骱瘮?shù)也是一個(gè)函數(shù),與其它函數(shù)是平行關(guān)系。這一點(diǎn)是與其它語言不同的,應(yīng)予以注意。2.形參變量也是內(nèi)部變量,屬于被調(diào)用函數(shù);實(shí)參變量,則是調(diào)用函數(shù)的內(nèi)部變量。3.允許在不同的函數(shù)中使用相同的變量名,它們代表不同的對(duì)象,分配不同的單元,互不干擾,也不會(huì)發(fā)生混淆。4.在復(fù)合語句中也可定義變量,其作用域只在復(fù)合語句范圍內(nèi)。在函數(shù)外部定義的變量稱為外部變量。外部變量不屬于任何一個(gè)函數(shù),其作用域是:從外部變量的定義位置開始,到本文件結(jié)束為止。外部變量可被作用域內(nèi)的所有函數(shù)直接引用,所以外部變量又稱全局變量。
[案例]
全局變量的具體應(yīng)用:ints1=3,s2=4,s3;Voidvs(){s1=s1*2;s3=s2;
ptintf(“s1=%d,s2=%d,s3=%d”,s1,s2,s3);}Voidmain(){
clrscr();
vs();s1=s1*2;s2=10;
printf(“s1=%d,s2=%d,s3=%d\n",s1,s2,s3);} 對(duì)于全局變量還有以下幾點(diǎn)說明:(1)外部變量可加強(qiáng)函數(shù)模塊之間的數(shù)據(jù)聯(lián)系,但又使這些函數(shù)依賴這些外部變量,因而使得這些函數(shù)的獨(dú)立性降低。從模塊化程序設(shè)計(jì)的觀點(diǎn)來看這是不利的,因此不是非用不可時(shí),不要使用外部變量。(2)在同一源文件中,允許外部變量和內(nèi)部變量同名。在內(nèi)部變量的作用域內(nèi),外部變量將
溫馨提示
- 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. 人人文庫網(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年云南建筑安全員C證考試(專職安全員)題庫附答案
- 2025湖南省安全員-C證考試(專職安全員)題庫附答案
- 2025年湖北省安全員B證考試題庫及答案
- 2025江蘇省安全員A證考試題庫及答案
- 貴陽信息科技學(xué)院《環(huán)境工程CAD技術(shù)應(yīng)用實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025安徽省安全員《C證》考試題庫及答案
- 廣州幼兒師范高等??茖W(xué)?!都矣秒娖髟O(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年安徽省安全員知識(shí)題庫附答案
- 《d分析方法》課件
- 補(bǔ)條件和問題課件
- 金庸群俠傳x最完整攻略(實(shí)用排版)
- SH/T 0356-1996燃料油
- GB/T 36324-2018信息安全技術(shù)工業(yè)控制系統(tǒng)信息安全分級(jí)規(guī)范
- 《水銀花開的夜晚》 參考答案
- 儀表施工交流-儀表安裝通病及分析與防治課件
- 網(wǎng)絡(luò)管理與維護(hù)課件
- 化妝品不良反應(yīng)監(jiān)測培訓(xùn)課件
- 中建項(xiàng)目實(shí)施策劃書編制指南(附表)
- 設(shè)備運(yùn)行售后故障響應(yīng)方案
- 亞馬遜品牌授權(quán)書(英文模板)
評(píng)論
0/150
提交評(píng)論