首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

C++ 指標與參考深度解析 (一):核心概念、宣告語法與 Address-of 運算子

     編輯:關於VC++

前言:從 lvalue/rvalue 理解記憶體模型

最簡單理解指標與參考的方式是從賦值運算式切入:

x = 1;  // 變數儲存資料,必須在等號左側 (lvalue)
1 = x;  // ❌ 編譯錯誤:字面常數 1 無記憶體位址,不可為 lvalue

lvalue (左值) 代表擁有記憶體位址的實體,可存放資料;rvalue (右值) 代表資料值本身。C++ 核心在於記憶體管理,操作位址的兩大機制即為 指標 與 參考。

16.1 什麼是指標與參考

指標與參考是特殊變數,其值為記憶體位址。區別於 int、double、char 等儲存資料本身的型別,指標/參考儲存的是已宣告並賦值的資料的位址。兩者機制不同:語法不同、慣用法不同、能力邊界不同。

16.2 宣告語法

指標宣告:型別後加 *

SOMETYPE* sometype;
int* x;

參考宣告:型別後加 &

SOMETYPE& sometype;
int& x;

空白字元不影響語義

// 指標以下等價
SOMETYPE* sometype;
SOMETYPE * sometype;
SOMETYPE *sometype;

// 參考以下等價
SOMETYPE& sometype;
SOMETYPE & sometype;
SOMETYPE &sometype;

16.3 "Address-of" 運算子 (&)

雖然宣告語法相似,但賦值方式截然不同。C++ 提供 & 運算子 (Address-of) 獲取變數、常數、陣列元素的位址,返回對應型別的指標:

SOMETYPE* x = &sometype; // 必須作為 rvalue (等號右側) 使用

區分:運算子 vs 參考宣告

  • &sometype 在運算式中 → Address-of 運算子,返回指標。
  • SOMETYPE& ref = sometype; 在宣告中 → 參考型別宣告,綁定別名。

編譯器依上下文輕易區分兩者。

實戰用法:避免臨時指標變數

若函數接受指標參數,可直接用 & 傳遞變數位址,無需額外宣告指標變數:

SOMETYPE MyFunc(SOMETYPE* x) {
    std::cout << *x << std::endl;
}

int main() {
    SOMETYPE i;
    MyFunc(&i);  // 直接傳遞 i 的位址
    return 0;
}

下一篇將詳細對比指標與參考的賦值規則、解參考操作、指標算術與函數傳遞機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved