c++語言中,函式的引數和返回值的傳遞方式有三種:值傳遞、指標傳遞和引用傳遞。
引用與指標的比較:
(1)引用被建立的同時必須被初始化(指標則可以在任何時候被初始化)。
(2)不能有null引用,引用必須與合法的儲存單元關聯(指標則可以是null)。
(3)一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件)。
結論:"引用傳遞"的性質象"指標傳遞",而書寫方式象"值傳遞"。
"引用"可以做的任何事情"指標"也都能夠做,為什麼還要"引用"這東西?
答案是"用適當的工具做恰如其分的工作"。
指標能夠毫無約束地操作記憶體中的任何東西,儘管指標功能強大,但是非常危險。
如果的確只需要借用一下某個物件的"別名",那麼就用"引用",而不要用"指標",以免發生意外。
以下是"值傳遞"的示例程式。
由於func1函式體內的x是外部變數n的乙份拷貝,改變x的值不會影響n, 所以n的值仍然是0。
void func1(int x)
...
int n = 0;
func1(n);
cout << "n = " << n << endl; // n = 0
下是"指標傳遞"的示例程式。
由於func2函式體內的x是指向外部變數n的指標,改變該指標的內容將導致n的值改變,所以n的值成為10。
void func2(int *x)
...
int n = 0;
func2(&n);
cout << "n = " << n << endl; // n = 10
以下是"引用傳遞"的示例程式。
由於func3函式體內的x是外部變數n的引用,x和n是同乙個東西,改變x等於改變n,所以n的值成為10。
void func3(int &x)
...
int n = 0;
func3(n);
cout << "n = " << n << endl; // n = 10
C 引用與指標的比較
c 引用與指標的比較 c 語言中,函式的引數和返回值的傳遞方式有三種 值傳遞 指標傳遞和引用傳遞。引用與指標的比較 1 引用被建立的同時必須被初始化 指標則可以在任何時候被初始化 2 不能有null引用,引用必須與合法的儲存單元關聯 指標則可以是null 3 一旦引用被初始化,就不能改變引用的關係 ...
C 引用與指標的比較
c 引用與指標的比較 引用是c 中的概念,初學者容易把引用和指標混淆一起。一下程式中,n是m的乙個引用 reference m是被引用物 referent int m int n m n相當於m的別名 綽號 對n的任何操作就是對m的操作。所以n既不是m的拷貝,也不是指向m的指標,其實n就是m它自己。...
引用與指標比較
引用 引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。定義的格式為 型別 引用變數名 已經定義過的變數名 例如 int m int n m 此處n為m的別名 引用的特點 1.乙個變數可以有多個別名 2.引用必須初始化 3.引用只能在初始化的時候引用一次,不能改變為再引用其他的變數 ...