程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++參數傳遞

c++參數傳遞

編輯:C++入門知識

定義:

形參:指出現在Sub 和Function過程形參表中的變量名、數組名,該過程在被調用前,沒有為它們分配內存,其作用是說明自變量的類型和形態以及在過程中的作用。形參可以是除定長字符串變量之外的合法變量名,也可以帶括號的數組名。 實參:實參就是在調用Sub 和Function過程時,從主調過程傳遞給被調用過程的參數值。實參可以是變量名、數組名、常數或表達式。在過程調用傳遞參數時,形參與實參是按位置結合的,形參表和實參表中對應的變量名可以不必相同,但它們的數據類型、參數個數及位置必須一一對應。[1] 兩者關系: 1. 形參只能是變量,實參可以是常量、變量或表達式。在被定義的函數中,必須指定形參的類型。 2. 實參與形參的個數應一樣,類型應一致。字符型和整型可以互相通用。 3. 在調用函數時,如果實參是數組名,則傳遞給形參的是數組的首地址 4.實參傳遞給形參是單向傳遞,形參變量在未出現函數調用時,並不占用內存,只在調用時才占用。調用結束後,將釋放內存。執行一個被調用函數時,形參的值如果發生改變,並不會改變主調函數中的實參的值。[2] 5.形參如同公式中的符號,實參就是符號具體的值,在調用過程前必須得到賦值;調用過程就是實現形參與實參的結合,把實參的值通過調用傳遞給形參,相當於把值代入公式進行計算。 實現方法: 1、按值傳遞參數: 按值傳遞參數時,是將實參變量的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變量本身,即實參變量保持調用前的值不變。按值傳遞參數時,需要在參數名前加"ByVal"關鍵字。 2、按地址傳遞參數: 按地址傳遞參數時,把實參變量的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是一個常數或表達式,Visual Basic 6.0會按"傳值"方式來處理,按地址傳遞不需要"ByVal"關鍵字。[3] 3、按數組傳遞參數: 在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須采用地址傳遞的方式來傳遞參數。數組參數在傳遞時應注意以下兩個方面: ① 在實參和形參列表中只寫數組名,忽略維數的定義,但圓括號不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔; ② 被調過程可分別通過Lbound和Ubound函數確定實參數組的下界和上界。 遇到問題: 如圖片所示: \
上面代碼來發送消息,在棧上傳遞地址(待驗證....) ------------------------------------------------------------------------------------------------------------ 下面代碼來接受參數:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPgoKPHN0cm9uZz4gPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140613/20140613092056259.jpg" alt=""> 問題原因: 傳遞地址有問題; 解決辦法: 直接傳遞值,就夠用; ------------------------------------------------------------------------------------------------------------

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved