首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
第5章 函數
【考點一】 函數定義在標準C+ +中,函數的定義形式為:<返回類型><函數名>(<形參列表>){<函數體>}<函數名>一般是標識符,一個程序只有一個main函數,其他函數名可隨意取(當然,必須避免使用C+ +的關鍵字),好的程序設計風格要求函數名最好是取有助于記憶的名字,如getchar函數,通過函數的名字可以知道函數的功能,這無疑會增加程序的可讀性。<形參列表>是由逗號分隔的,分別說明函數的各個參數。形參將在函數被調用時從調用函數那里獲得數據。在C+ +中,函數形參列表可以為空,即一個函數可以沒有參數。但即使函數形參列表為空,括起函數參數的一對圓括號也不允許省略。<返回類型>又稱函數類型,表示一個函數所計算(或運行)的結果值的類型。如果一個函數沒有結果值,如函數僅用來更新(或設置)變量值、顯示信息等,則該函數返回類型為void類型。一個沒有返回值的函數類似于一些程序語言(如pascal語言)中的過程(procedure)。由一對花括號括起來的<函數體>是語句的序列,它定義了函數應執行的具體操作。需要注意的是,C+ +不允許函數定義嵌套,即在一個函數體內不能包含有其他函數的定義。
【考點二】 函數調用C+ +中函數調用的一般形式為:<函數名>(<實參表>)當調用一個函數時,其實參的個數、類型及排列次序必須與函數定義時的形參相一致,也就是說實參與形參應該一對一地匹配。當函數定義時沒有形參,則函數調用時,<實參表>亦為空。依據對函數返回值的使用方式,函數的調用方法可分為以下幾種:(1)語句調用,這通常用于不帶返回值的函數。這種情況下,被調用函數作為一個獨立的語句出現在程序中。(2)表達式調用。將被調用函數作為表達式的一部分來進行調用。它適用于被調用函數帶有返回值的情況。(3)參數調用。被調用函數作為另一個函數的一個參數進行調用。
【考點三】 函數原型在C+ +中,函數在使用之前要預先聲明。這種聲明在標準C+ +中稱為函數原型(function prototype),函數原型給出了函數名、返回類型以及在調用函數時必須提供的參數的個數和類型。函數原型的語法為:<返回類型><函數名>(<形參列表>);(注意在函數原型后要有分號)實際上函數原型說明有兩種形式:(1)直接使用函數定義的頭部,并在后面加上一個分號。(2)在函數原型說明中省略參數列表中的形參變量名,僅給出函數名、函數類型、參數個數及次序。注意:在C+ +中,在調用任何函數之前,必須確保它已有原型說明。【考點四】 函數返回類型根據函數是否帶有參數以及函數是否有返回值,可以將函數分為如下四類。
1.帶參數的有返回值函數定義形式為:<返回類型><函數名>(<參數列表>){<語句序列>}
2.不帶參數的有返回值函數定義形式為:<返回類型><函數名>(){<語句序列>}
3.帶參數的無返回值函數定義形式為:void<函數名>(<參數列表>){<語句序列>}
4.不帶參數的無返回值函數定義形式為:void<函數名>(){<語句序列>}
【考點五】 函數參數C+ +中,函數之間傳遞參數有傳值和傳地址兩種傳遞方式。此外,C+ +還提供了默認參數機制,可以簡化復雜函數的調用。
1.參數的傳遞方式(1)傳值傳值是將實參值的副本傳遞(拷貝)給被調用函數的形參。它是C+ +的默認參數傳遞方式,在此之前的多數函數參數傳遞都是傳值。由于傳值方式是將實參的值復制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數形參看作是函數的局部變量。傳值的最大好處是函數調用不會改變調用函數實參變量的內容,可避免不必要的副作用。(2)傳地址有時我們確實需要通過函數調用來改變實參變量的值,或通過函數調用返回多個值(return語句只能返回一個值),這時僅靠傳值方式是不能達到目的。
2.默認參數在C+ +中,可以為參數指定默認值,在函數調用時沒有指定與形參相對應的實參時就自動使用默認值。默認參數可以簡化復雜函數的調用。默認參數通常在函數名第一次出現在程序中的時候,如在函數原型中,指定默認參數值。指定默認參數的方式從語法上看與變量初始化相似。
【考點六】 函數重載如果能用同一個函數名字在不同類型上做相類似的操作就會方便很多,這種情況即為函數重載。其實這一技術早已用于C+ +的基本運算符。例如加法操作只有一個運算符+,但它卻可以用來做整型數、浮點數和指針的加法運算。將這一思想推廣到函數,即為函數重載。 【考點七】 內聯函數C+ +引入內聯(inline)函數的原因是用它來取代C中的預處理宏函數。內聯函數和宏函數的區別在于,宏函數是由預處理器對宏進行替換,而內聯函數是通過編譯器來實現的,因此內聯函數是真正的函數,只是在調用的時候,內聯函數像宏函數一樣的展開,所以它沒有一般函數的參數壓棧和退棧操作,減少了調用開銷,因此,內聯函數比普通函數有更高的執行效率。在C+ +中使用inline關鍵字來定義內聯函數。inline關鍵字放在函數定義中函數類型之前。不過,編譯器會將在類的說明部分定義的任何函數都認定為內聯函數,即使它們沒有用inline說明。
【考點八】 遞歸函數如果一個函數在其函數體內直接或間接地調用了自己,該函數就稱為遞歸函數。遞歸是解決某些復雜問題的十分有效的方法。遞歸適用以下的一般場合。(1)數據的定義形式按遞歸定義。(2)數據之間的關系(即數據結構)按遞歸定義,如樹的遍歷,圖的搜索等。(3)問題解法按遞歸算法實現,例如回溯法等。使用遞歸需要注意以下幾點:(1)用遞歸編寫代碼往往較為簡潔,但要犧牲一定的效率。因為系統處理遞歸函數時都是通過壓棧/退棧的方式實現的。(2)無論哪種遞歸調用,都必須有遞歸出口,即結束遞歸調用的條件。(3)編寫遞歸函數時需要進行遞歸分析,既要保證正確使用了遞歸語句,還要保證完成了相應的操作。
希望與更多計算機等級考試的網友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |