C++的傳值呼叫、傳址呼叫 及參照 | C++基礎訓練
2010-07-04 00:50:50 |
||||||
http://blog.sssh.tp.edu.tw/haning/2330 |
||||||
函數的Call By Value、Call By Address 及Call By Reference 和指標、參照之間的關係,常常讓人暈頭轉向。蔡明志大師這本「指標的藝術」講解得深入淺出,值得一讀。以下我引用此書p.206-p.208的一個例子,再稍做修改,讓同學們可以藉由簡易圖示更加容易明白。如果能看原文,那當然是最好的啦! #include <iostream> using namespace std; void swap_by_address(int *, int*); void swap_by_reference(int &, int &); void swap_by_value(int, int); int main() { int x=100, y=200;
/* Call by value */ x=100; y=200; cout << "Call by value "; swap_by_value(x, y); cout << "x=" << x << ", y=" << y << endl;
/* Call by address */ x=100; y=200; cout << "Call by address "; swap_by_address(&x, &y); cout << "x=" << x << ", y=" << y << endl; /* Call by reference */ x=100; y=200; cout << "Call by reference "; swap_by_reference(x, y); cout << "x=" << x << ", y=" << y << endl; system("pause"); return 0; }
|
||||||