函數(shù)定義和調(diào)用的格式_第1頁
函數(shù)定義和調(diào)用的格式_第2頁
函數(shù)定義和調(diào)用的格式_第3頁
函數(shù)定義和調(diào)用的格式_第4頁
函數(shù)定義和調(diào)用的格式_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

函數(shù)定義和調(diào)用的格式第一頁,共十五頁,2022年,8月28日函數(shù)的定義函數(shù)定義的格式類型修飾符函數(shù)名(形式參數(shù)表){函數(shù)體}例:doublesqare(doublen){returnn*n;}參數(shù)有參函數(shù)各參數(shù)用逗號分隔,與變量說明方法相同無參函數(shù)“形式參數(shù)表”可以為空,也可用void返回值有返回值函數(shù)1、“類型修飾符”說明返回值的類型,為Int時可以

省略,但不提倡2、“函數(shù)體”中最后一語句應(yīng)為:Return表達(dá)式;3、函數(shù)的返回值應(yīng)與“類型修飾符”的說明一致,

兼容的轉(zhuǎn)換,不兼容的發(fā)生編譯錯誤無返回值函數(shù)1、“類型修飾符”必須為Void2、“函數(shù)體”中最后語句可以為:Return;也可不用第二頁,共十五頁,2022年,8月28日函數(shù)調(diào)用函數(shù)調(diào)用格式函數(shù)名(實在參數(shù)表)實參與形參在數(shù)量、類型、次序上必須一致

類型不一致時,兼容的轉(zhuǎn)換,不兼容的發(fā)生編譯錯誤調(diào)用方法作為表達(dá)式1、必須是有返回值的函數(shù)2、例:result=sqare(5.0);作為語句1、可以沒有返回值,有,也被舍棄不用2、調(diào)用語句后加語句結(jié)束符構(gòu)成表達(dá)式語句3、例:Hi();sqare(5.0);函數(shù)的遞歸調(diào)用函數(shù)直接或間接地調(diào)用自身第三頁,共十五頁,2022年,8月28日函數(shù)原形與頭文件三種格式函數(shù)定義類型修飾符函數(shù)名(形式參數(shù)表){函數(shù)體}函數(shù)原形類型修飾符函數(shù)名(形式參數(shù)表);函數(shù)調(diào)用函數(shù)名(實在參數(shù)表)一項原則:在調(diào)用函數(shù)時,函數(shù)必須經(jīng)過定義或原形說明頭文件將C++應(yīng)用程序中各個程序文件里面要調(diào)用的用戶自定義函數(shù)的原形說明放在一個頭文件中,在有函數(shù)調(diào)用的程序文件中包含這個頭文件即可第四頁,共十五頁,2022年,8月28日多文件應(yīng)用系統(tǒng)第一個文件:描述函數(shù)的頭文件第二個文件:定義函數(shù)的程序文件第三個文件:調(diào)用函數(shù)的主程序文件第五頁,共十五頁,2022年,8月28日參數(shù)傳遞傳值把實參表達(dá)式的值作為一個副本傳遞給形參變量,函數(shù)調(diào)用不會改變實參的值一維數(shù)組參數(shù)1、在定義一個一維數(shù)組參數(shù)時,可以不限定數(shù)組元素的個數(shù)2、在調(diào)用具有數(shù)組參數(shù)的函數(shù)時,須以單獨(dú)的數(shù)組名為實在參數(shù)二維數(shù)組參數(shù)1、在定義一個二(或三)維數(shù)組參數(shù)時,其第一維可以不限定,但其余各維都須限定2、在調(diào)用具有數(shù)組參數(shù)的函數(shù)時,須以單獨(dú)的數(shù)組名為實在參數(shù)3、僅用行下標(biāo)引用一個二維數(shù)組時,實際上引用的是相應(yīng)行的那個一維數(shù)組說明:對于數(shù)組參數(shù),形參數(shù)組是對應(yīng)的實參數(shù)組的代表,而不是它的副本,因此,對形參數(shù)組的任何改變實際上就是對實參數(shù)組的改變第六頁,共十五頁,2022年,8月28日可選參數(shù)在說明一個函數(shù)時,可以為形式參數(shù)表中的最后若干個參數(shù)設(shè)定默認(rèn)值,從而把這些參數(shù)設(shè)定為可選參數(shù)在調(diào)用這個函數(shù)時,如果沒有給出對應(yīng)于可選參數(shù)的實參,系統(tǒng)就自動以設(shè)定的默認(rèn)值作為實參傳遞給這個函數(shù)在調(diào)用具有可選參數(shù)的函數(shù)時,被省略的只能是最后的連續(xù)的若干個可選參數(shù)(即不能間隔省略)可選參數(shù)的說明格式如下:類型修飾符變量名=默認(rèn)值(常量表達(dá)式)可選參數(shù)應(yīng)該在函數(shù)原形中說明第七頁,共十五頁,2022年,8月28日內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù):在一般函數(shù)定義前面加上保留字inline,該函數(shù)即被說明為內(nèi)聯(lián)函數(shù),例:

inlineintadd2(intn){returnn+2;}內(nèi)聯(lián)展開:程序執(zhí)行時,C++有可能直接調(diào)用函數(shù)體代碼來替代對函數(shù)的調(diào)用函數(shù)說明:內(nèi)聯(lián)函數(shù)的說明也應(yīng)放置在頭文件中第八頁,共十五頁,2022年,8月28日函數(shù)重載與名字混成函數(shù)重載:允許定義同名的函數(shù),但重載的函數(shù)必須在參數(shù)的數(shù)量上或類型上與其他同名函數(shù)有所不同重載函數(shù)的調(diào)用:如果調(diào)用時所用的參數(shù)與所定義的各種情況均不相同,則編譯系統(tǒng)會選擇與其兼容的最相似的那個函數(shù),并完成必要的類型轉(zhuǎn)換,如果找不到兼容的函數(shù),則產(chǎn)生編譯錯誤名字混成:編譯系統(tǒng)在處理重載函數(shù)時會形成不同的內(nèi)部名稱,這種方法稱為名字混成在重載函數(shù)時必須保證在逐個去掉可選參數(shù)后,仍然在參數(shù)個數(shù)上或類型上與同名函數(shù)有所不同第九頁,共十五頁,2022年,8月28日函數(shù)的作用域全局作用域:不但在定義函數(shù)的文件中可以調(diào)用,而且在同一應(yīng)用系統(tǒng)的其他程序文件中也可調(diào)用文件作用域:說明為static的函數(shù)只能被同一文件中的函數(shù)調(diào)用,例:

staticlongadd(longa,longb){returna+b;}第十頁,共十五頁,2022年,8月28日全局變量全局變量:定義于函數(shù)外部的變量稱為全局變量靜態(tài)生存期:全局變量在應(yīng)用程序運(yùn)行的整個期間都有效,如果在定義時未初始化,則自動初始化為0文件作用域:全局變量定義時使用static修飾,則只允許同一文件中的函數(shù)訪問該變量跨文件作用域:全局變量定義時未使用static修飾,則還允許同一系統(tǒng)的其他程序文件中的函數(shù)訪問該變量外部說明:externinta應(yīng)用場合

①跨文件作用域的全局變量被其他程序文件中的函數(shù)訪問

②變量的聲明在函數(shù)聲明之后,稱之為“變量的原形”第十一頁,共十五頁,2022年,8月28日局部變量局部變量:定義于函數(shù)內(nèi)部的變量塊作用域:局部變量只允許定義該變量的塊中的語句訪問,“塊”一般指復(fù)合語句,復(fù)合語句中位于變量定義之前的語句也不能訪問該變量局部變量的存儲類型:

①自動變量:其生存期從變量定義開始,到所在塊運(yùn)行結(jié)束時為止,用auto修飾或省略之

寄存器變量:也是自動變量的一種,但它是存儲于寄存器中的,只有適合于單個寄存器存放的變量才可聲明為寄存器變量,用register修飾

③靜態(tài)變量:用static修飾的局部變量具有靜態(tài)生存期,存在于應(yīng)用程序的整個運(yùn)行期間第十二頁,共十五頁,2022年,8月28日函數(shù)模板(一)函數(shù)模板:一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的原代碼除了因所針對的數(shù)據(jù)類型不同而有所差異外,其基本結(jié)構(gòu)相同。定義格式:template<模板形參表>函數(shù)定義例:

template<classT>//T被稱之為虛擬類型TMax(Tx,Ty){return(x>y?x:y);}函數(shù)模板的實例化:編譯系統(tǒng)根據(jù)每次調(diào)用的實在參數(shù)的情況生成適當(dāng)?shù)恼{(diào)用代碼,并生成相應(yīng)版本的函數(shù)定義,例:cout<<Max(3,5);intMax(intx,inty){return(x>y?x:y);}第十三頁,共十五頁,2022年,8月28日函數(shù)模板(二)函數(shù)模板的強(qiáng)制實例化:在函數(shù)調(diào)用格式中插入模板的實參表,例:

cout<<Max<int>(3,5.0);將生成如下實例:

intMax(intx,inty){return(x>y?x:y;)}//5.0為double型,強(qiáng)制轉(zhuǎn)換為int型若與模板的某個實例原形相同的函數(shù)定義已經(jīng)存在,則函數(shù)定義優(yōu)先函數(shù)模板的形參表中可以有多個參數(shù),例:

template<classT1,classT2>

T1Max(T1x,T2y){

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

評論

0/150

提交評論