Call by Value
- int main() {
- int x = 5;
- foo(x);
- }
- void foo(int x) {
- x++;
- }
Call by Pointer
- int main() {
- int x = 5;
- foo(&x);
- }
- void foo(int *x) {
- (*x)++; // 指向,並加1
- }
把變數的Reference傳入,foo的*x會指向這個Reference,共用同一快記憶體空間。
Call by Reference
(C++新增,作用和目的雷同Call by Pointer,但在撰寫程式碼的時候方便很多,只需要在接入時多加一個&即可,特別注意int& xx; 是不行的,會出現 error: ‘xx’ declared as reference but not initialized,這個用法必定要被初始化。)
- int main() {
- int x = 5;
- foo(x); // 不用加&
- }
- void foo(int &x) {
- x++; // 修改此x就是修改main的x
- }
把變數傳入,foo的&x會指向這個變數的Reference,共用同一快記憶體空間。
No comments:
Post a Comment