C++ 中的引用運算子

Muhammad Husnain 2023年10月12日
  1. 在 C++ 中使用引用運算子
  2. 比較 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 值不能直接設定。

& 運算子與函式中的形式引數一起使用時,使它們成為引用引數。有關參考和值引數的更多資訊此處

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

相關文章 - C++ Operator