c c 中函式的引數傳遞

2021-06-16 23:45:47 字數 1152 閱讀 5671

c/c++中,函式可以傳遞的引數有三種形式,值、引用和指標。

下面來看一段**,看看三種傳遞方式產生的結果。

#include #include using namespace std;

void change1(int n)

void change2(int &n)

void change3(int *n)

int main(int argc)

列印結果如下:

可見,原值為10的實參n,change1函式沒有改變它的值,而change2、change3函式則成功改變了它的值。

同時,檢視函式的操作位址,也會發現,change1的操作位址並不是實參n的位址。

說明:1.值傳遞的形式不會傳遞n本身,故不能改變n的值。

2.引用傳遞、指標傳遞,實際上就是將位址傳入,能夠成功對該位址進行操作。

但是需要注意:

1.引用和指標傳遞前,需要被初始化。

2.引用和指標在記憶體中開闢的儲存單元應該是合法單元,不應該是null。

3.一旦引用被初始化,就不能改變引用的關係,而指標可以隨意改變指向的物件。

對於沒有初始化指標或者引用的情況,我們再來看乙個例子:

#include #include #include #include using namespace std;

void init(char *p)

int main()

else

free(p);

system("pause");

return exit_success;

}

輸出結果:

此時你會發現,雖然傳入函式的是指標,但是p仍然沒有被初始化,以後在用的時候請一定注意。

C C 中函式引數傳遞

c或c 中函式的引數傳遞包括 值傳遞 指標傳遞 引用傳遞這三種方法。以經典的交換兩個整數為例 問題描述 輸入描述 兩個待交換的整數。程式輸出 交換後的兩個整數。includevoid myswap int x,int y int main include 指標傳遞,函式體內只有指標值的變化 void...

C C 中函式引數傳遞詳解

昨天看了記憶體管理的有關內容,有一點了解,但不是很深入,發現之前寫 時有很多細節問題沒有注意到,只知道這樣做可以實現功能,卻不知道為什麼可以這樣,對於採用自己的方法造成的隱患也未知,更不曉得還有其他方法可以實現,我們知道c 強大的乙個原因是因為對於乙個問題的答案多種解答方法或思路,我想著也許就是它難...

C C 中函式引數傳遞詳解

首先 c 中引數傳遞方式 一般來說,c裡面有兩種傳遞 1 值傳遞 2 指標傳遞 嚴格來看,只有一種傳遞,值傳遞,指標傳遞也是按值傳遞的,複製的是位址。c 裡面有三種傳遞方法 1 值傳遞 2 指標傳遞 3 引用傳遞 但是嚴格來看,是兩種,其實指標傳遞也是值傳遞,只不過是值傳遞的是位址。下面是部分 先看...