第三章 函式

2021-10-17 15:02:02 字數 1972 閱讀 3767

函式是模組劃分的基本單位,是對外處理的一種抽象

c和c++的子程式體現為函式

呼叫其他函式的被稱為主函式

被其他行數呼叫的稱為被調函式

函式的語法形式

型別說明符 函式名(含型別說明的形式參數列)

語句序列

形式引數

形式參數列(簡稱形參)表的內容如下:

type1 name1, type2 name2, ... , typen namen

函式的返回值和返回值型別

函式的返回值可以有乙個返回值

型別說明符規定了函式返回值的型別

函式的返回值由 return 語句給出

return 表示式

乙個函式可以不講任何值返回給主調函式,這時它的型別識別符號為 void ,

可以不寫 return 語句,

但也可以寫乙個不帶表示式的return 語句,用於將結束當前函式的呼叫,格式如下

return;

函式的呼叫形式

函式呼叫之前需要宣告

函式的定義就屬於函式的宣告,英雌再定義了乙個函式後,可以直接呼叫這個函式

但如果希望在定義乙個函式前呼叫它,則需要在呼叫函式之前新增該函式的函式原型宣告

函式原型宣告如下:

型別說明符 函式名(含型別說明的形參表);

使用decltype來獲取某個變數或表示式的型別,對於函式返回值的使用方法雷子,以簡化函式返回值型別定義:

int a=10, b=5;

decltype(a) mymax(decltype(a) lhs, decltype(a) rhs)

函式宣告時,形參表只要包含完整的型別資訊即可,形參名可以省略,也就是說,原型宣告的形參表可以按照下面的格式書寫:

type1,type2, ... ,typen

宣告了函式原型之後,便可以按如下形式呼叫子函式:

函式名(實參列表)

巢狀呼叫

遞迴呼叫

函式可以直接或間接地呼叫自身,稱為遞迴呼叫

遞迴呼叫有兩個階段

①遞推②回歸

值傳遞

發生函式呼叫時,給形參分配記憶體空間,並用實參來初始化形參(直接將實參地值傳遞給形參)

引數值地單向傳遞過程

一旦形參獲得了值便於實參脫離關係,以後無論形參怎樣改變,都不會影響實參

引用傳遞

引用是一種特殊型別地變數,可以被認為是另乙個變數的別名

引用時注意:

引用作為形參時

由於形參的初始化不在型別說明時進行,而是在執行主調函式中的呼叫表示式時,才為形參分配記憶體空間,同時初始化形參

這樣引用型別的初始化就通過形實結合,稱為實參的乙個別名

對形參的任何操作也就會直接作用於實參

用引用作為形參,在函式呼叫時發生的引數傳遞,稱為引用傳遞

含有可變數量形參的函式

c++標準庫提供兩種方法:

內聯函式不是在呼叫時發生控制轉移,而是在編譯時將函式體嵌入在每乙個呼叫處

節省了引數傳遞、控制轉移等開銷

需要使用關鍵字 inline,其語法形式如下

inline 型別說明符 函式名(含型別說明的形參表)

語句序列

constexpr函式是指能用於常量表示式的函式

函式在定義時可以預先宣告預設的形參值

有預設值的形參必須在形參列表之後

在相同的作用域中,不允許在同乙個函式的多個宣告中對同乙個引數的預設值重複定義,即使前後定義的值相同也不行

兩個以上的函式,具有相同的函式名,但是形參的個數或者型別不同,編譯器根據實參和形參的型別及個數的最佳匹配,自動確定呼叫哪乙個函式,這就是函式的過載

注意:過載函式的形參必須不同,形參個數不同或者 形參型別不同

推薦**

Oracle第三章 函式

第三章 函式 單值函式 針對每一行查詢內容給出乙個結果 組函式 把查詢的所有行按照某個標準分組,每乙個組給出乙個輸出 單值函式 注意 單值函式可以隨意巢狀,但是潛逃之後先執行最裡層的,在執行外層的 字元函式 lower將字串轉化成小寫 select lower hello from dual 查詢名...

第三章 函式程式設計

函式是一段具有特定功能的 可重用的語句組,用函式名來表示並通過函式名進行功能呼叫。函式也可以看作是一段具有名字的子程式 特性 1.減少重複 2.使程式變的可擴充套件 3.使程式變得易維護 語法定義 def sayhi 函式名 print hello,i m nobody sayhi 呼叫函式 可以帶...

第三章 函式 讀書心得

1.短小 函式盡可能的維持在一屏可見的範圍內。20行封頂 最好。短小除了閱讀輕鬆外,更便於理解,出錯的概率也比較小。2.只做一件事情 我們常常期望函式具有可擴充套件性,貌似有點不一致?3.每個函式乙個抽象層級 每個函式都對應乙個抽象層級 函式由相同抽象層級的其他函式組成 自頂向下讀 向下規則 4.s...