在決定函數的Parameter時,我以前對python的概念就是需要用一個變數接收函數的return,如下
1
2
3
4
5def sum1(a,b):
XXX = a+b
return XXX
a= fun()
用C/C++的方式大略就是
1 | int sum1(int a , int b){ |
會有一種變數被更新成自己預期的感覺,但這樣的方式其實是將value複製到另外一個記憶體空間
實際上在main函數中變數並沒有被修改掉,所以通常我們在C/C++中會使用指標形式,可以理解為傳入的Value為變數的Address ,有些人會說call by Pointer 但我覺得不確切
1 | int swap(int* a , int* b){ |
在函數中重新指定指標指向的值,或是說修改這個位址存放的值
原本變數a的記憶體位址所存放的值被修改成b的值 以此類推…
- 注意此時的”Argument” 需要使用Address (在C++中則有另一種方法)
而在C++中又有另一種寫法,又被稱為傳參照(傳引用) ,Call by Reference
1 |
|
讓人容易混淆的點在於 函數的parameter 有”&”的存在,需要注意他並不是取址運算子,當作一種方便的工具,用來表示Call by reference ,讓我們在函數的範圍內不需要考慮記憶體位址,卻達到修改記憶體所的值 ,並且會偵測是否為合法的記憶體位址。