HOWTO · C++
C++ 中的引用運算子
瞭解 C++ 中引用運算子(&) 的用法。
本頁內容
本文將重點介紹引用運算子&,也稱為 address of 運算子。
儘管引用運算子在多種情況下的工作方式相似,但它在各種程式語言之間幾乎沒有區別。我們將只關注它在 C++ 程式語言中的使用。
首先,我們將學習它的基本語法和概念。然後,我們將回答有關在不同上下文中使用引用運算子的常見混淆。
在 C++ 中使用引用運算子
宣告引用變數的語法:
int &ref = m;
int & ref = m;
int& ref = m;
& 運算子根據使用的上下文有不同的用途和含義。以下部分討論引用運算子在 C++ 中執行的任務。
例子:
// Simple integer type variable intialization
int m = 12;
// ref is a reference to m
int& ref = m;
// Print value of m
cout << "Original m = " << m << endl;
ref = 20;
// Print value of ref
cout << "Modified m = " << m << endl;
在上面的程式碼中,我們將 12 儲存在變數 m 中。接下來,我們使用引用運算子將ref 指向 m。
這裡,指向意味著 ref 具有 m 變數的記憶體地址。所以,當我們更新 m 的值時,我們通過 ref 變數獲得相同的更新值,該變數是引用變數。
簡而言之,ref 變數成為另一個變數 m 的別名。我們也可以說 ref 只是 m 命名的實際變數的另一個名稱。
我們在上面的程式碼片段中為 ref 分配了 20。此更改也將在更新值為 20 的 m 上可見。
輸出:
Original m = 12
Modified m = 20
比較 C++ 中的引用變數和指標變數
通常,學習者會將引用變數與指標變數混淆。
在上一節中,我們通過示例詳細討論了引用變數。
要定義,指標變數將變數的地址儲存在記憶體中。它使用引用運算子來初始化或定義其值。
請參閱下面的程式碼以瞭解 & 與指標變數的用法;然後,我們將討論差異。
// Integer type variable intialization
int number = 88;
// Declare a pointer variable
int* ptrNumber;
// Assign the address of the "number" to "ptrNumnber"
ptrNumber = &number;
// Declare another int pointer and initialize it with the address of the number
int* pAnother = &number;
在這段程式碼中,我們首先宣告瞭一個指標變數 ptrNumber,然後在第三條語句中分配了 number 的地址。這裡,&用作 address of 運算子並返回 number 的記憶體地址,然後將其分配給指標 ptrNumber。
上述片段中的最後一條語句在宣告時將 number 的地址分配給另一個指標 pAnother。需要注意的是,指標變數與引用變數不同。
讓我們看看使用下表給出的差異。
| 指標變數 | 參考變數 |
|---|---|
| 指標儲存變數的記憶體地址。 | 引用變數是另一個變數的別名。 |
間接運算子 * 用於取消引用指標。 |
引用變數是一個常量指標,不需要解引用。 |
| 它可以重新分配以引用各種專案。 | 必須在初始化時賦值,地址值一旦形成就不能改變。 |
| NULL 值可以直接分配給指標變數。 | NULL 值不能直接設定。 |
& 運算子與函式中的形式引數一起使用時,使它們成為引用引數。有關參考和值引數的更多資訊此處。