複製鏈接
請複製以下鏈接發送給好友

實際參數

鎖定
實際參數簡稱“實參”。在調用有參函數時,函數名後面括號中的參數稱為“實際參數”,實參可以是常量、變量或表達式。
中文名
實際參數
外文名
argument
簡    稱
實參

實際參數簡介

在調用有參函數時,主調函數和被調函數之間有數據傳遞關係。在主調函數中調用一個函數時,函數名後面括號中的參數稱為“實際參數”(簡稱“實參”)。
實參可以是常量變量表達式, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。

實際參數數據傳遞

在調用函數過程中,系統會把實參的值傳遞給被調用函數的形參。或者説,形參從實參得到一個值。該值在函數調用期間有效,可以參加該函數中的運算。
在調用函數過程中發生的實參與形參間的數據傳遞,常稱為“虛實結合”。 [1] 

實際參數函數調用過程

1、函數的形參列於函數聲明中,在函數定義的函數體內使用。在未出現函數調用時,形參不佔內存中的存儲單元;當函數調用時,形參(任何種類的)是一類將被填充的空白或是佔位符。
2、將實參的值傳遞給形參。當函數被調用時,實參列在函數名後面的括號裏。執行函數調用時,實參被傳遞給形參
3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。
4、通過return語句將函數值帶回到主調函數。
5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。 [1] 

實際參數傳遞機制對比

函數參數值傳遞
在值傳遞過程中,被調函數的形式參數作為被調函數的局部變量中分配內存空間,主調函數的實際參數的值被複制並存入該內存空間,形成實際參數的一個副本。
值傳遞的特點是,被調函數對形式參數的任何操作都不會影響主調函數中的實際參數變量。 [2] 
函數參數地址傳遞
在地址傳遞過程中,被調函數的形式參數仍然在被調函數的棧中分配內存空間,但此時是將主調函數實際參數的地址存入該內存空間。被調函數對形式參數的任何操作都被處理成間接尋址,即通過棧中存放的地址訪問主調函數中的實參變量。
地址傳遞的特點是,被調函數對形式參數的操作都影響主調函數中的實參變量。 [2] 
函數參數引用傳遞
在引用傳遞過程中,被調函數的形式參數是對主調函數中實際參數的引用(C++引用,別名),形式參數和實際參數對應相同的內存空間。被調函數對形式參數進行操作,就相當於對實際參數進行操作。 [2] 
參考資料
  • 1.    譚浩強.C程序設計.北京:清華大學出版社,2010:175-177
  • 2.    徐素錦,張亞歌.C++語言函數參數傳遞機制分析[科技信息].[2016.11].http://www.cnki.net/KCMS/detail/detail.aspx?QueryID=6&CurRec=7&recid=&filename=KJXX200926060&dbname=CJFD2009&dbcode=CJFQ&pr=&urlid=&yx=&uid=WEEvREcwSlJHSldRa1Fhb09jeVVYOEE2Z0hMbTFEM25kYTJCYnM0aFpCWT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MTcwMzBSdkZDcmhVN3JNTGlmVGRyRzRIdGpPcVk5RFpJUjhlWDFMdXhZUzdEaDFUM3FUcldNMUZyQ1VSTHllWnU=