C 語言程式設計 第三章

2021-10-07 12:17:47 字數 2107 閱讀 3131

函式呼叫:呼叫函式前要宣告函式原型 型別識別符號 被呼叫函式名(含型別說明的形參表)

​ 呼叫形式:函式名(實參列表)

函式的遞迴呼叫:函式直接或間接呼叫自身

函式的引數傳遞:

1.在函式被呼叫時才分配形參的儲存單元

2.實參可以是常量、變數或表示式

3.實參型別必須與形參相符:如果不相符,編譯器會先進行型別轉換,判斷是否合法

4.值傳遞可以是傳遞引數值,即單向傳遞

5.引用傳遞可以實現雙向傳遞

6.常引用作引數可以保障實參資料的安全

引用型別:

1.引用(&)是識別符號的別名

2.定義乙個引用時,必須同時對它進行初始化,使它指向乙個已存在的物件

3.一旦乙個引用被初始化後,就不能改為指向其它物件

4.引用可以作為形參

含有可變引數的函式:

· 如果所有實參型別相同,可以傳遞乙個名為initializer_list的標準庫型別

· 如果實參的型別不同,我們可以編寫可變引數的模板(第9章)

·initializer_list:

1.是一種標準庫型別,用於表示某種特定型別的值的陣列,該型別定義在同名的標頭檔案中

2.initializer_listls;//initializer_list的元素型別是string

3.其物件中的元素永遠是常量值,我們無法改變initializer_list物件中元素的值

4.含有initializer_list形參的函式可以同時擁有其他形參

5.使用initializer_list編寫乙個錯誤資訊輸出函式,使其可以用於可變數量的形參

內聯函式:

1.在呼叫簡單函式的時候能夠提高執行效率,由編譯器實現

2.宣告時使用關鍵字inline

3.編譯時在呼叫處用函式體進行替換,節省了引數傳遞,控制轉移等開銷

4.內聯函式體內不能有迴圈語句和switch語句

5.內聯函式的定義必須出現在內聯函式第一次被呼叫之前

6.對內聯函式不能進行異常介面宣告

constexpr函式:

1.constexpr修飾的函式,在其所有引數都是constexpr時一定返回constexpr

2.constexpr是乙個常數表示式函式,可以用來初始化常量,承諾只要給的引數是常量表示式,那一定返回常量表示式

帶預設引數值的函式:

1.可以預先設定預設的引數值,呼叫時如給出實參,則採用實參值,否則採用預先設定的預設引數值

2.有預設引數的形參必須列在形參列表的最右,即預設引數值的右邊不能有無預設值的引數

3.呼叫時實參與形參的結合次序是從左向右

4.如果乙個函式有原型宣告,且原型宣告在定義之前,則預設引數值應在函式原型宣告中給出,函式定義中不能寫預設引數值;

若只有函式的定義,或函式定義在前,則預設引數值可以在函式定義中給出。

函式過載:c++允許功能相近的函式在相同的作用域內以相同函式名宣告,從而形成過載。

1.過載函式的形參必須不同:個數不同或者型別不同(編譯器不以形參名或返回值來區分過載函式)

2.編譯程式將根據實參和形參的型別及個數的最佳匹配來選擇呼叫哪乙個函式

3.不要將不同功能的函式宣告為過載函式,以免出現呼叫結果的誤解和混淆。

判斷兩浮點數是否相同:abs(x-y)<1e-10

函式的定義與呼叫、引數傳遞

內聯函式、帶預設引數值的函式、函式過載

c++系統函式

C語言程式設計(第三章例題)

例3.1 把用華氏法表示的溫度 如64 f 轉換成用攝氏法表示的溫度。編寫 includeint main 執行結果 例3.2 計算存款利息。有1000元,想存一年。有三種方法可選 1 活期,年利率為r1。2 一年期定期,年利率為r2。3 存兩次半年定期存款,年利率為r3。請分別計算出一年後按三種方...

C語言第三章

main.c project1 created by sihan guo on 2019 06 13.include int main int argc,const char ar else 迴圈結構 當型 int icount 5 while icount 0 直到型迴圈結構 這個迴圈結構至少執行...

《C程式語言》 第三章 控制流

3.1 語句與程式塊 在表示式之後加上乙個分號 它們就變成了語句。用一對花括號 把一組宣告和語句括在一起就構成了程式塊,在語法上等價於單條語句。3.2 if else語句 每個else與最近的前乙個沒有else配對的if進行匹配。if n 0 if a b z a else z b 程式的縮排結構明...