全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++考點(diǎn)分析之函數(shù)

字號(hào):

5.1 函數(shù)定義和函數(shù)調(diào)用
    考點(diǎn)1 函數(shù)的定義和說(shuō)明
    1.函數(shù)的定義
    在C++中,定義函數(shù)的一般形式為:
     <返回類型><函數(shù)名>(<形式參數(shù)表>)
     {<函數(shù)體>}
    其中,<返回類型>是該函數(shù)返回值的數(shù)據(jù)類型,若該函數(shù)無(wú)返回值,只是一個(gè)過(guò)程調(diào)用,則該函數(shù)的類型為void。<函數(shù)名>是一種標(biāo)識(shí)符,通過(guò)它來(lái)調(diào)用函數(shù)<形式參數(shù)表>由逗號(hào)分隔,分別說(shuō)明函數(shù)的各個(gè)形式參數(shù),若無(wú)形式參數(shù),圓括號(hào)也不可省略。形式參數(shù)的使用將使被調(diào)用函數(shù)可以從調(diào)用函數(shù)那里獲取數(shù)據(jù)。<函數(shù)體>可以包含若干個(gè)變量和函數(shù)的定義,以及各種語(yǔ)句序列。若函數(shù)體是0條語(yǔ)句,稱該函數(shù)為空函數(shù)。無(wú)論函數(shù)體內(nèi)有多少條語(yǔ)句,花括號(hào)是不可省的。
    注意:C++不允許函數(shù)定義的嵌套。
    另外,關(guān)于函數(shù)return語(yǔ)句的形式有以下兩種。
    (1)return<表達(dá)式>;
    此種形式用于帶返回值的函數(shù)。
    (2)return;
    此種形式用于無(wú)返回值的函數(shù),即返回類型為void的函數(shù)。
    2.函數(shù)的說(shuō)明
    函數(shù)的說(shuō)明又稱為函數(shù)的聲明。在C++中,函數(shù)的說(shuō)明原則有以下兩點(diǎn)。
    (1)若一個(gè)函數(shù)先定義,后調(diào)用,則調(diào)用前可以不必說(shuō)明;
    (2)若一個(gè)函數(shù)先調(diào)用,后定義,則調(diào)用前必須說(shuō)明。
    說(shuō)明調(diào)用的函數(shù)的方法為:
     <數(shù)據(jù)類型><函數(shù)名>(<參數(shù)表>);
    考點(diǎn)2 函數(shù)的調(diào)用
    在C++中,函數(shù)調(diào)用的格式為:
    <函數(shù)名>(<實(shí)參表>);
    實(shí)參表應(yīng)該與形參表一一對(duì)應(yīng)。根據(jù)對(duì)函數(shù)返回值的使用方式,函數(shù)的調(diào)用方法大致可分為:語(yǔ)句調(diào)用、表達(dá)式調(diào)用和參數(shù)調(diào)用3種。函數(shù)在調(diào)用之前,一定要定義或說(shuō)明。函數(shù)調(diào)用過(guò)程就是將實(shí)參傳給形參,執(zhí)行函數(shù)體后將結(jié)果返回的過(guò)程。
    5.2 函數(shù)原型和函數(shù)返回類型
    考點(diǎn)3 函數(shù)原型
    在C++中,在調(diào)用任何函數(shù)之前,必須確保該函數(shù)已有函數(shù)原型。C++函數(shù)的聲明(說(shuō)明)就是原型的聲明,這種聲明也叫函數(shù)原型。函數(shù)原型的語(yǔ)法格式與函數(shù)的說(shuō)明格式相同。格式如下:
     <數(shù)據(jù)類型><函數(shù)名>(<形參列表>);
    函數(shù)原型說(shuō)明的兩種形式為:
       (l)直接使用函數(shù)定義的頭部,并且必須在后面加上一個(gè)分號(hào);
       (2)在函數(shù)原型說(shuō)明中省略參數(shù)列表中的形參變量名,只給出函數(shù)名、函數(shù)類型、參數(shù)個(gè)數(shù)及次序,注意函數(shù)原型后面的分號(hào)不可省略。
    考點(diǎn)4 函數(shù)返回類型
    根據(jù)函數(shù)是否帶有參數(shù)以及函數(shù)是否有返回值,可將函數(shù)分為4種,如表5-1所示。
      表5-1關(guān)于返回類型的四種函數(shù)
    5.3 函數(shù)參數(shù)
    考點(diǎn)5 參數(shù)的傳遞方式
    在C++中,實(shí)參傳給形參的方式有以下3種。
     (l)傳值調(diào)用。它的特點(diǎn)是形參值的改變不影響實(shí)參。在使用此方式時(shí),調(diào)用函數(shù)的實(shí)參使用常量、變量值和表達(dá)式值,被調(diào)用函數(shù)的形參使用變量值。它的實(shí)現(xiàn)機(jī)制是系統(tǒng)將實(shí)參備份一個(gè)副本傳給形參。
       (2)傳址調(diào)用。它的特點(diǎn)是傳址調(diào)用時(shí),在被調(diào)函數(shù)中可以通過(guò)改變形參指針?biāo)赶虻膶?shí)參變量值來(lái)間接改變實(shí)參值。在使用此方式時(shí),調(diào)用函數(shù)的實(shí)參使用地址值,被調(diào)用函數(shù)的形參使用指針。它的實(shí)現(xiàn)機(jī)制是系統(tǒng)將實(shí)參的地址賦給對(duì)應(yīng)的形參指針,使形參指針指向?qū)崊⒆兞恐怠?BR>     (3)引用調(diào)用。在C++中常常使用引用作為函數(shù)形參來(lái)實(shí)現(xiàn)在被調(diào)用函數(shù)中改變調(diào)用函數(shù)的實(shí)參值。其實(shí)引用調(diào)用也是一種隱式的傳址過(guò)程,所以通過(guò)引用傳遞函數(shù)參數(shù)屬于隱式傳遞地址。引用調(diào)用是C++中的一種函數(shù)調(diào)用方式,而在C語(yǔ)言中沒(méi)有這種函數(shù)調(diào)用方式。
    考點(diǎn)6 設(shè)置函數(shù)參數(shù)的默認(rèn)值
    在C++中,允許在函數(shù)的說(shuō)明或定義時(shí)給一個(gè)或多個(gè)參數(shù)指定默認(rèn)值。但在一個(gè)指定了默認(rèn)值的參數(shù)的右邊不可以出現(xiàn)沒(méi)有指定默認(rèn)值的參數(shù)。在函數(shù)調(diào)用時(shí),編譯器按從左到右的順序?qū)?shí)參與形參結(jié)合,當(dāng)實(shí)參數(shù)目不足時(shí),編譯器將按同樣的順序用說(shuō)明或定義中的默認(rèn)值來(lái)補(bǔ)足聽(tīng)缺少的實(shí)參。在給某個(gè)參數(shù)指定默認(rèn)值時(shí),不僅可以是一個(gè)數(shù)值,也可以是任意復(fù)雜的表達(dá)式。
    5.4 函數(shù)重載及帶有默認(rèn)參數(shù)的函數(shù)
    考點(diǎn)7 函數(shù)重載
    函數(shù)重載是指同一個(gè)函數(shù)名可以對(duì)應(yīng)著多個(gè)函數(shù)的實(shí)現(xiàn)。函數(shù)重載要求編譯器能夠惟一地確定調(diào)用函數(shù)時(shí)應(yīng)執(zhí)行哪個(gè)函數(shù)代碼,即采用哪個(gè)函數(shù)實(shí)現(xiàn)確定函數(shù)實(shí)現(xiàn)時(shí),要從函數(shù)參數(shù)的個(gè)數(shù)和類型上來(lái)區(qū)分。也就是說(shuō)進(jìn)行函數(shù)重載時(shí),要求同名函數(shù)的參數(shù)個(gè)數(shù)不同,或者參數(shù)的類型不同。否則無(wú)法實(shí)現(xiàn)函數(shù)重載。例如,可以給函數(shù)add()定義兩個(gè)函數(shù)實(shí)現(xiàn),該函數(shù)的功能是求兩個(gè)操作數(shù)的和。其中,一個(gè)是實(shí)現(xiàn)兩個(gè)int型數(shù)之和,另一個(gè)是實(shí)現(xiàn)兩個(gè)float型數(shù)之和。