C C 函式引數傳遞機制

2021-07-25 15:45:29 字數 898 閱讀 6241

c/c++的基本引數傳遞機制有兩種:值傳遞和引用傳遞,我們分別來看一下這兩種的區別。

(1)值傳遞過程中,需在堆疊中開闢記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形參的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值。

(2)引用傳遞過程中,被調函式的形參雖然也作為區域性變數在堆疊中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的位址。被調函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的位址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的實參變數。

下面我們來看乙個示例。

/*

*測試函式引數傳遞機制

*/class

crect

crect

(int height,

int widht)};

//(1)傳址呼叫(傳指標)

intrectareapoint

(crect *rect)

//(2)引用傳遞

intrectarearefer

(crect &rect)

//(3)傳值呼叫

intrectarea

(crect rect)

看一下我們的測試**和測試結果。

//測試**邏輯

void

testpoint()

//測試結果

面積:100

面積:200

rect.height:30

面積:300

rect.height:30

可以發現傳址呼叫和引用傳遞兩種方式,當改變形參的值時,同時也會將實參的值改變,而傳值呼叫改變形參則對實參沒有任何影響。

C C 中的函式引數傳遞機制

一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。值傳遞 passl by value 過程中,被調函式的形式引...

C C 中的函式引數傳遞機制

一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。值傳遞 passl by value 過程中,被調函式的形式引...

C C 中的函式引數傳遞機制

瀏覽選項 大中小 顏色 預設灰度 橄欖色綠色 藍色褐色 紅色文章摘要 本文論述了在 c 和 c 中函式呼叫的引數傳遞機制 同時附帶說明了函式返回值的一些問題。本文示例使用的是vc 6.0。c c 中的函式引數傳遞機制 一 函式引數傳遞機制的基本理論 函式引數傳遞機制問題在本質上是呼叫函式 過程 和被...