版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章結(jié)構(gòu)化程序6.1函數(shù)6.2編譯預(yù)處理理解函數(shù)的概念掌握函數(shù)的定義和調(diào)用掌握函數(shù)參數(shù)傳遞方式了解編譯預(yù)處理命令6.1函數(shù)6.1.1函數(shù)的定義6.1.3函數(shù)的參數(shù)傳遞、返回值及函數(shù)聲明6.1.2函數(shù)的調(diào)用6.1.4數(shù)組名作為函數(shù)參數(shù)6.1.6變量的作用域6.1.5指針變量作為形參6.1.7函數(shù)的嵌套調(diào)用和遞歸調(diào)用6.1函數(shù)6.1.1函數(shù)的定義一個函數(shù)包含函數(shù)頭和函數(shù)體兩部分。函數(shù)頭定義函數(shù)功能和接口的全部要素,包括函數(shù)名、函數(shù)參數(shù)、函數(shù)返回值等內(nèi)容;函數(shù)體則定義函數(shù)的算法實現(xiàn)。函數(shù)必須先定義后使用。格式:<數(shù)據(jù)類型>函數(shù)名(形式參數(shù)表){函數(shù)體}intprime(intm){inti,yes=1;for(i=2;i<=m/2;i++)if(m%i==0){yes=0;break;}if(yes==1&&m>=2)return1;elsereturn0;}6.1函數(shù)6.1.2函數(shù)的調(diào)用格式:函數(shù)名(實際參數(shù)表)#include<iostream>usingnamespacestd;doublemax(doublex,doubley){if(x>y)returnx;elsereturny;}intmain(){doublex,y;cout<<"輸入兩個實數(shù):"<<endl;cin>>x>>y;cout<<x<<"和"<<y<<"中的較大數(shù)為<<max(x,y)<<endl;return0;}6.1函數(shù)6.1.3函數(shù)的參數(shù)傳遞、返回值及函數(shù)聲明函數(shù)的調(diào)用過程如下:(1)給形參和局部變量分配存儲單元;(2)進行參數(shù)傳遞,若形參是簡單變量,就將實參的值傳給形參;(3)執(zhí)行被調(diào)函數(shù);(4)執(zhí)行完被調(diào)函數(shù)之后,返回主調(diào)函數(shù),分配一個臨時變量存儲返回值,同時釋放被調(diào)函數(shù)的形參和局部變量所占用的內(nèi)存單元。6.1函數(shù)6.1.3函數(shù)的參數(shù)傳遞、返回值及函數(shù)聲明參數(shù)傳遞按照參數(shù)形式的不同,C/C++有兩種調(diào)用方式:傳值調(diào)用和傳地址調(diào)用。6.1函數(shù)6.1.3函數(shù)的參數(shù)傳遞、返回值及函數(shù)聲明函數(shù)返回值對于有返回值的函數(shù),必須使用return語句將要返回的值返回給調(diào)用者。格式:return表達式;doubleTriangleArea(doublea,doubleb,doublec){if((a+b<=c)||(b+c<=a)||(a+c<=b))return-1;doubles;s=(a+b+c)/2;returnsqrt(s*(s-a)*(s-b)*(s-c));}6.1函數(shù)6.1.3函數(shù)的參數(shù)傳遞、返回值及函數(shù)聲明函數(shù)聲明
C/C++程序中,對函數(shù)之間的排列順序沒有固定要求,但要滿足先定義后使用的原則。對于庫函數(shù),在程序開頭用#include指令將所需的頭文件包含進來即可;而對于自定義函數(shù),只要在調(diào)用之前進行了函數(shù)聲明,則無論函數(shù)放在什么位置,程序都能正確編譯、運行。函數(shù)聲明也稱為函數(shù)原型(functionprototype)。格式:<數(shù)據(jù)類型>函數(shù)名(<形參表>);6.1函數(shù)6.1.4數(shù)組名作為函數(shù)參數(shù)當(dāng)形參是數(shù)組名時,采用的是地址傳遞,就是將實參數(shù)組的首地址給了形參,它們共用存儲單元。#include<iostream>usingnamespacestd;voidswap(intx[]){intz;z=x[0];x[0]=x[1];x[1]=z;}intmain(){inta[2]={1,2};swap(a);cout<<a[0]<<""<<a[1];return0;}6.1函數(shù)6.1.4數(shù)組名作為函數(shù)參數(shù)關(guān)于數(shù)組名用作形參,還有以下注意事項:(1)用數(shù)組名作為形參時,應(yīng)該在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組。(2)實參數(shù)組與形參數(shù)組的類型應(yīng)該一致,否則會出錯。(3)形參數(shù)組可以不指定大小,在定義數(shù)組時,可以在數(shù)組名后跟一組方括號。有時為了滿足在被調(diào)函數(shù)中處理數(shù)組元素個數(shù)的需要,可以另設(shè)一個參數(shù),傳遞需要處理數(shù)組元素的個數(shù)。(4)在被調(diào)函數(shù)中,也可以指定形參數(shù)組的大小,但不起作用。因為地址傳遞將實參數(shù)組首地址給了形參數(shù)組作為形參數(shù)組的首地址,使用的是同樣的存儲單元,有相同的值,同時發(fā)生變化。(5)調(diào)用函數(shù)時,實參只能寫數(shù)組名(或指針)6.1函數(shù)6.1.5指針變量作為形參如果將形參定義為指針,那么在函數(shù)調(diào)用時傳遞的就是實參的地址,函數(shù)體就可以根據(jù)該地址對實參的本身進行操作,從而改變實參的值。#include<iostream>usingnamespacestd;voidswap(int*,int*);intmain(){inta=5,b=10;cout<<"函數(shù)調(diào)用前,a="<<a<<",b="<<b<<endl;swap(&a,&b);cout<<"函數(shù)調(diào)用后,a="<<a<<",b="<<b<<endl;return0;}voidswap(int*i,int*j){inttemp;temp=*i;*i=*j;*j=temp;}6.1函數(shù)6.1.6變量的作用域局部變量在函數(shù)內(nèi)部定義的變量稱為局部變量,它只在它定義的作用域內(nèi)有效,當(dāng)退出作用域時,其存儲空間被釋放。不同函數(shù)中的局部變量之間沒有聯(lián)系,即使是同名,這些同名變量也不會相互沖突。#include<iostream>usingnamespacestd;voidfun(){intt=5;cout<<"fun()中的t="<<t<<endl;}intmain(){doublet=3.5;cout<<"main()中的t="<<t<<endl;fun();cout<<"main()中的t="<<t<<endl;return0;}6.1函數(shù)6.1.6變量的作用域靜態(tài)變量靜態(tài)變量是存儲在固定存儲空間的變量。從定義開始,一直保留其存儲空間,供其在被調(diào)用時使用,直到程序結(jié)束。靜態(tài)變量在退出其作用域后,仍然保留其存儲空間,并在下一次進入時繼續(xù)使用。#include<iostream>usingnamespacestd;intmain(){inta,s;s=100;cout<<s<<endl;for(a=1;a<5;a++){staticints=10;
s++;cout<<s<<endl;}cout<<s;return0;}6.1函數(shù)6.1.6變量的作用域全局變量定義在所有函數(shù)之外的變量稱為全局變量(globalvariable),可以為本文件中的所有函數(shù)所共享,如果其中任何一個函數(shù)修改全局變量,其他函數(shù)都可“見到”修改結(jié)果。全局變量可定義在函數(shù)體外的任何位置,從變量定義開始,到源文件結(jié)束,變量一直有效。#include<iostream>usingnamespacestd;intn=100;voidfun(){n*=2;}intmain(){n*=2;cout<<n<<endl;fun();cout<<n<<endl;return0;}6.1函數(shù)6.1.7函數(shù)的嵌套調(diào)用和遞歸調(diào)用嵌套調(diào)用在C/C++中,所有函數(shù)的級別都是一樣的,不允許在一個函數(shù)內(nèi)定義另一個函數(shù),即不允許嵌套定義。但函數(shù)可以嵌套調(diào)用,也就是說,可以在一個函數(shù)內(nèi)調(diào)用另一個函數(shù)。#include<iostream>usingnamespacestd;voidpm(){voidps();ps();cout<<"\nHowareyou?";ps();}voidps(){cout<<"\n**************";}intmain(){pm();return0;}6.1函數(shù)6.1.7函數(shù)的嵌套調(diào)用和遞歸調(diào)用遞歸調(diào)用在函數(shù)調(diào)用中,有這樣兩種情況:一種是在函數(shù)A的定義中有調(diào)用函數(shù)A的語句,即自己調(diào)用自己;另一種是在函數(shù)A中出現(xiàn)調(diào)用函數(shù)B語句,而在函數(shù)B的定義中也出現(xiàn)調(diào)用函數(shù)A的語句,即相互調(diào)用。前者稱為直接遞歸,后者稱為間接遞歸。#include<iostream>usingnamespacestd;intfac(intn){inty;cout<<n<<'\t’;if(n==0||n==1)y=1;elsey=n*fac(n-1);cout<<y<<'\t';returny;}intmain(){cout<<"\n4!="<<fac(4)<<endl;return0;}6.2編譯預(yù)處理6.2.1宏定義指令6.2.3條件編譯指令6.2.2文件包含指令6.2編譯預(yù)處理6.2.1宏定義指令不帶參數(shù)的宏定義格式:#define宏名常量串#include<iostream>usingnamespacestd;#defineN2#defineMN+1#defineNUM(M+1)*M/2intmain(){inti;for(i=1;i<=NUM;i++);cout<<i<<endl;return0;}6.2編譯預(yù)處理6.2.1宏定義指令帶參數(shù)的宏定義格式:#define宏名(形參表)參數(shù)表達式#include<iostream>usingnamespacestd;#defineP4#defineF(x)P*x*xintmain(){intm=2,n=4;cout<<F(m+n)<<endl;return0;}6.2編譯預(yù)處理6.2.2文件包含指令文件包含用#include指令,預(yù)處理后將指令中指明的源程序文件嵌入源程序文件的指令位置處。格式
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)自動化生產(chǎn)線廠房租賃合同4篇
- 2024離婚合同書:不含財產(chǎn)分割案例版B版
- 個人房產(chǎn)抵押合同
- 2024年04月交通銀行股份有限公司畢節(jié)分行(貴州)招考1名勞務(wù)人員筆試歷年參考題庫附帶答案詳解
- 2024物業(yè)公司收費標(biāo)準合同
- 2025年度不銹鋼復(fù)合材料應(yīng)用研發(fā)與推廣協(xié)議3篇
- 2024年03月貴州中國農(nóng)業(yè)銀行貴州省分行春季招考筆試歷年參考題庫附帶答案詳解
- 2025年度農(nóng)產(chǎn)品溯源體系建設(shè)合作協(xié)議范本3篇
- 二零二五年度草牧場資源綜合利用與承包合同3篇
- 專職護林員2024年度服務(wù)協(xié)議版B版
- 骨科手術(shù)后患者營養(yǎng)情況及營養(yǎng)不良的原因分析,骨傷科論文
- GB/T 24474.1-2020乘運質(zhì)量測量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實施方案(一)
- 高血壓患者用藥的注意事項講義課件
- 特種作業(yè)安全監(jiān)護人員培訓(xùn)課件
- (完整)第15章-合成生物學(xué)ppt
- 太平洋戰(zhàn)爭課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
評論
0/150
提交評論