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 引用傳遞 但是嚴格來看,是兩種,其實指標傳遞也是值傳遞,只不過是值傳遞的是位址。下面是部分 先看...