國立屏東大學 資訊工程學系 物件導向程式設計
C++與C語言一樣,提供了指標以存取特定的記憶體位址,其用法與C語言並無二致,在此不予贅述。
C++讓我們可以為某個變數,建立一個「別名」。
using namespace std; #include <iostream> int main () { double a = 3.1415927; int *p; double &b = a; // b is a b = 89; cout << "a contains: " << a << endl; // Displays 89. return 0; }
在上述範例中,b被稱為參考變數(reference variable),我們在宣告b時,使用&b=a來讓b成為a的分身。要注意的是,一但宣告後,不可以再改變其參考的對象。
參考變數也可以用在函式的引數宣告,例如下面的程式碼:
using namespace std; #include <iostream> void change (double &r, double s) { r = 100; s = 200; } int main () { double k, m; k = 3; m = 4; change (k, m); cout << k << ", " << m << endl; // Displays 100, 4. return 0; }
這種將參考傳入函式做為引數的方法,稱為Call by Reference。下面則是以指標的方式,將前述程式再實作一次:
using namespace std; #include <iostream> void change (double *r, double s) { *r = 100; s = 200; } int main () { double k, m; k = 3; m = 4; change (&k, m); cout << k << ", " << m << endl; // Displays 100, 4. return 0; }
下面的程式則又複雜了一點:
using namespace std; #include <iostream> double &biggest (double &r, double &s) { if (r > s) return r; else return s; } int main () { double k = 3; double m = 7; cout << "k: " << k << endl; // Displays 3 cout << "m: " << m << endl; // Displays 7 cout << endl; biggest (k, m) = 10; cout << "k: " << k << endl; // Displays 3 cout << "m: " << m << endl; // Displays 10 cout << endl; biggest (k, m) ++; cout << "k: " << k << endl; // Displays 3 cout << "m: " << m << endl; // Displays 11 cout << endl; return 0; }
這個程式蠻有趣的吧!