函式第一節 函式
首先要知道在程式設計過程中為什麼要使用函式?函式的呼叫是不是使得c++的程式複雜了呢,而且沒有什麼實際用處呢?事實恰恰相反,函式的使用讓程式 的可讀性,可維護性更強。同時函式也可以被反覆呼叫,也提高了模組的可復用性。
函式定義
了解什麼是函式?它的具體形式是什麼?
函式是一組一起執行乙個任務的語句。每個 c++ 程式都至少有乙個函式,即主函式 main() ,所有簡單的程式都可以定義其他額外的函式。咱們自己可以把**劃分到不同的函式中。如何劃分**到不同的函式中是由自己來決定的,但在邏輯上,劃分通常是根據每個函式執行乙個特定的任務來進行的。
在 c++ 中,函式由乙個函式頭和乙個函式主體組成。下面列出乙個函式的所有組成部分:
·返回型別:乙個函式可以返回乙個值。return_type是函式返回的值的資料型別。有些函式執行所需的操作而不返回值,在這種情況下,return_type 是關鍵字void。
·函式名稱:這是函式的實際名稱。函式名和引數列表一起構成了函式簽名。
·引數:引數就像是佔位符。當函式被呼叫時,您向引數傳遞乙個值,這個值被稱為實際引數。引數列表包括函式引數的型別、順序、數量。引數是可選的,也就是說,函式可能不包含引數。
·函式主體:函式主體包含一組定義函式執行任務的語句。
函式的形式
函式的形式從結構上說可以分為三種:無參函式,有參函式和空函式。但是他們的定義形式大致相同。
(1)無參函式
顧名思義極為沒有引數傳遞的函式,無參函式一般不需要帶回函式值,所以函式型別說明為void。
(2)有參函式
有參函式即為有引數傳遞的函式了,一般這種函式需要帶回函式值。
(3)空函式
空函式就是空白的意思,函式體只有一對花括號,花括號內沒有任何語句的函式。例如:
函式名()
空函式不完成什麼工作,只占用乙個位置,在大型的程式設計中,這種空函式用來擴充其他函式的功能。
函式的宣告與呼叫
函式的宣告:函式宣告會告訴編譯器函式名稱及如何呼叫函式。函式的實際主體可以單獨定在函式宣告中,引數的名稱並不重要,只有引數的型別是必需的義。當您在乙個原始檔中定義函式且在另乙個檔案中呼叫函式時,函式宣告是必需的。在這種情況下,我們自己應該在呼叫函式的檔案頂部宣告函式。
函式的呼叫:建立 c++ 函式時,會定義函式做什麼,然後通過呼叫函式來完成已定義的任務。其實就是為函式分配儲存空間,執行函式被其他函式呼叫的函式稱為執行函式;呼叫其他函式的函式,稱為呼叫函式。
當程式呼叫函式時,程式控制權會轉移給被呼叫的函式。被呼叫的函式執行已定義的任務,當函式的返回語句被執行時,或到達函式的結束括號時,會把程式控制權交還給主程式。
tips:函式定義!=函式呼叫
呼叫函式的返回值:呼叫函式時,傳遞所需引數,如果函式返回乙個值,則可以儲存返回值。
函式的傳值呼叫
函式呼叫過程:
1.傳值呼叫
這種呼叫方式是將實參的資料傳遞給形參,即將實參值拷貝乙個副本存放在被呼叫函式的棧區中。被呼叫函式中,形參值可以改變,但不影響主調函式的實參值。引數傳遞方式只是從實參到形參,簡稱單向值傳遞。
2.傳址呼叫
這種呼叫方式是將實參變數的位址值傳遞給形參,這時形參是指標,即讓形參的指標指向實參位址,這裡不再是將實參拷貝乙個副本給形參,而是讓形參直接指向實參,這就提供了一種可以改變實參變數的值的方法。
指標變數
對指標變數的介紹,舉例如下:
int *p (定義指標變數)
int &x=y (x不分配新的空間,與y公用同一空間)
p=&x (取x位址)
y=*p (取p位址中的內容)
對於指標指向陣列元素的介紹,舉例如下:
int a[10] ,*p (定義指著變數)
p=&a[0](取a[0]位址)
p=a (取整個陣列[a]的位址)
(p為變數,a為常量)
舉個指標變數的經典例子:用指向陣列的指標變數輸出陣列的全部元素;
int main ()
實參形參
對於實參與形參,有以下四點需注意:
1、形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。
2、實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使引數獲得確定值。
3、實參和形參在數量上,型別上、順序上應嚴格一致,否則就會發生型別不匹配的錯誤。
4、在一般傳值呼叫的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函式呼叫過程中,形參值發生改變,而實參中的值不會變化。而在引用呼叫的機制當中是將實參引用的位址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
區域性變數與全部變數
1,區域性變數只在本函式範圍有效,在此函式以外是不能使用這些變數;全域性變數的有效範圍是從定義變數的位置開始到本原始檔結束。
2,區域性變數是程式執行到該函式時給該變數分配記憶體空間,函式結束則釋放該記憶體空間;全域性變數是程式執行時事先分配記憶體空間,當程式結束時釋放記憶體。
本節對於對函式的學習,我覺得以後對一些複雜程式的處理上有很多需要借鑑的地方,總體就是說,化繁為簡,化抽象為具體,具體情況具體分析,更能清楚地了解**中各部分的職責,也更方便對整個程式的維護,提高**的利用率和使用效率,這就是it人才的具體思路趨向吧應該,
c 第六章函式
基礎知識總結 一 函式定義 c 程式的典型結構 第1部分 預處理指令 符號常量定義 函式宣告 第2部分 主函式 第2部分 函式定義 函式定義的形式 資料型別 函式名 形式參數列 函式體 執行語句 注 1 資料型別是函式的返回值型別,若資料型別為void,則無返回值。2 形式參數列可以是空的 即無參函...
第六章函式
第六章 函式 重要知識點 1 函式定義的語法形式 資料型別 函式名 形式參數列 關於函式的定義有如下說明。函式的資料型別是函式的返回值型別 若資料型別為void,則無返回值 函式名是識別符號,乙個程式中除了主函式名必須為main外,其餘函式的名字按照識別符號的取名規則可以任意選取。形式引數 簡稱形參...
第六章 函式
示例 使用函式列印菱形 include intprint star int main intprint star int i,j for i 0 i 4 i 定義無參函式 函式名後面的括號中是空的,沒有任何引數,定義無參函式的一般形式為 型別名 函式名 或 型別名 函式名 void 函式體包括宣告部...