少妇AV一区二区三区无|久久AV电影一区三|日本一级片黄色毛片|亚洲久久成人av在线久操|黄色视频在线免费看呀一区二区|综合精品视频精品久久久浪朝|亚洲午夜成人资源|欧美黄色一级片黑寡妇|内射无毛少妇特写|无码农村夜晚偷拍啪啪

計算機等級考試二級C++各章內容摘要5

時間:2008-10-06 05:35:00   來源:無憂考網     [字體: ]
第5章 函數
【考點一】 函數定義在標準C+ +中,函數的定義形式為:<返回類型><函數名>(<形參列表>){<函數體>}<函數名>一般是標識符,一個程序只有一個main函數,其他函數名可隨意取(當然,必須避免使用C+ +的關鍵字),好的程序設計風格要求函數名是取有助于記憶的名字,如getchar函數,通過函數的名字可以知道函數的功能,這無疑會增加程序的可讀性。<形參列表>是由逗號分隔的,分別說明函數的各個參數。形參將在函數被調用時從調用函數那里獲得數據。在C+ +中,函數形參列表可以為空,即一個函數可以沒有參數。但即使函數形參列表為空,括起函數參數的一對圓括號也不允許省略。<返回類型>又稱函數類型,表示一個函數所計算(或運行)的結果值的類型。如果一個函數沒有結果值,如函數僅用來更新(或設置)變量值、顯示信息等,則該函數返回類型為void類型。一個沒有返回值的函數類似于一些程序語言(如pascal語言)中的過程(procedure)。由一對花括號括起來的<函數體>是語句的序列,它定義了函數應執(zhí)行的具體操作。需要注意的是,C+ +不允許函數定義嵌套,即在一個函數體內不能包含有其他函數的定義。 【考點二】 函數調用C+ +中函數調用的一般形式為:<函數名>(<實參表>)當調用一個函數時,其實參的個數、類型及排列次序必須與函數定義時的形參相一致,也就是說實參與形參應該一對一地匹配。當函數定義時沒有形參,則函數調用時,<實參表>亦為空。依據對函數返回值的使用方式,函數的調用方法可分為以下幾種:(1)語句調用,這通常用于不帶返回值的函數。這種情況下,被調用函數作為一個獨立的語句出現在程序中。(2)表達式調用。將被調用函數作為表達式的一部分來進行調用。它適用于被調用函數帶有返回值的情況。(3)參數調用。被調用函數作為另一個函數的一個參數進行調用。 【考點三】 函數原型在C+ +中,函數在使用之前要預先聲明。這種聲明在標準C+ +中稱為函數原型(function prototype),函數原型給出了函數名、返回類型以及在調用函數時必須提供的參數的個數和類型。函數原型的語法為:<返回類型><函數名>(<形參列表>);(注意在函數原型后要有分號)實際上函數原型說明有兩種形式:(1)直接使用函數定義的頭部,并在后面加上一個分號。(2)在函數原型說明中省略參數列表中的形參變量名,僅給出函數名、函數類型、參數個數及次序。注意:在C+ +中,在調用任何函數之前,必須確保它已有原型說明。函數原型說明通常放在程序文耐凡浚允溝酶夢募興瀉寄艿饔盟。蕦上,标准函数的X退得鞣旁諏訟嚶Φ耐肺募,这也是为什脜苍戺用标准函数时眳Q胍嚶Φ耐肺募腦蛑弧T諏私飭撕ㄒ、函数调用憾d橢螅涂梢孕闖鲆桓鐾暾腃+ +程序,并可將其編譯和運行。 【考點四】 函數返回類型根據函數是否帶有參數以及函數是否有返回值,可以將函數分為如下四類。
1.帶參數的有返回值函數定義形式為:<返回類型><函數名>(<參數列表>){<語句序列>}
2.不帶參數的有返回值函數定義形式為:<返回類型><函數名>(){<語句序列>}
3.帶參數的無返回值函數定義形式為:void<函數名>(<參數列表>){<語句序列>}
4.不帶參數的無返回值函數定義形式為:void<函數名>(){<語句序列>} 【考點五】 函數參數C+ +中,函數之間傳遞參數有傳值和傳地址兩種傳遞方式。此外,C+ +還提供了默認參數機制,可以簡化復雜函數的調用。
1.參數的傳遞方式(1)傳值傳值是將實參值的副本傳遞(拷貝)給被調用函數的形參。它是C+ +的默認參數傳遞方式,在此之前的多數函數參數傳遞都是傳值。由于傳值方式是將實參的值復制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數形參看作是函數的局部變量。傳值的好處是函數調用不會改變調用函數實參變量的內容,可避免不必要的副作用。(2)傳地址有時我們確實需要通過函數調用來改變實參變量的值,或通過函數調用返回多個值(return語句只能返回一個值),這時僅靠傳值方式是不能達到目的。
2.默認參數在C+ +中,可以為參數指定默認值,在函數調用時沒有指定與形參相對應的實參時就自動使用默認值。默認參數可以簡化復雜函數的調用。默認參數通常在函數名第一次出現在程序中的時候,如在函數原型中,指定默認參數值。指定默認參數的方式從語法上看與變量初始化相似。 【考點六】 函數重載如果能用同一個函數名字在不同類型上做相類似的操作就會方便很多,這種情況即為函數重載。其實這一技術早已用于C+ +的基本運算符。例如加法操作只有一個運算符+,但它卻可以用來做整型數、浮點數和指針的加法運算。將這一思想推廣到函數,即為函數重載。 【考點七】 內聯(lián)函數C+ +引入內聯(lián)(inline)函數的原因是用它來取代C中的預處理宏函數。內聯(lián)函數和宏函數的區(qū)別在于,宏函數是由預處理器對宏進行替換,而內聯(lián)函數是通過編譯器來實現的,因此內聯(lián)函數是真正的函數,只是在調用的時候,內聯(lián)函數像宏函數一樣的展開,所以它沒有一般函數的參數壓棧和退棧操作,減少了調用開銷,因此,內聯(lián)函數比普通函數有更高的執(zhí)行效率。在C+ +中使用inline關鍵字來定義內聯(lián)函數。inline關鍵字放在函數定義中函數類型之前。不過,編譯器會將在類的說明部分定義的任何函數都認定為內聯(lián)函數,即使它們沒有用inline說明。 【考點八】 遞歸函數如果一個函數在其函數體內直接或間接地調用了自己,該函數就稱為遞歸函數。遞歸是解決某些復雜問題的十分有效的方法。遞歸適用以下的一般場合。(1)數據的定義形式按遞歸定義。(2)數據之間的關系(即數據結構)按遞歸定義,如樹的遍歷,圖的搜索等。(3)問題解法按遞歸算法實現,例如回溯法等。使用遞歸需要注意以下幾點:(1)用遞歸編寫代碼往往較為簡潔,但要犧牲一定的效率。因為系統(tǒng)處理遞歸函數時都是通過壓棧/退棧的方式實現的。(2)無論哪種遞歸調用,都必須有遞歸出口,即結束遞歸調用的條件。(3)編寫遞歸函數時需要進行遞歸分析,既要保證正確使用了遞歸語句,還要保證完成了相應的操作。