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

C++ 引用 vs 指針:六大核心差異與選型指南

     編輯:關於C語言

差異總覽表

特性引用指針
初始化定義時必須綁定可延遲、可為 nullptr
重新綁定不可(終身忠於初始對象)可隨時指向新對象
空值不存在空引用(未定義行為)nullptr 合法
sizeof被引用對象大小指針自身大小(4/8 字節)
const無 const reference 概念(引用本身不可變)有 const T* / T* const
類型安全編譯期強類型檢查可強制轉型,風險較高

底層實現真相

引用本質是 指針常量的語法糖:T& ref = obj; ≈ T* const ref = &obj;。編譯器自動解引用,生成代碼幾乎相同。

選型決策樹

需要「可選」或「可變目標」? → 指針
需要「不可為空」且「不可重綁」? → 引用
函數參數傳遞大對象? → const 引用
函數返回對象別名? → 引用(注意生命週期)
需要指針運算/數組遍歷? → 指針

常見陷阱

  1. 返回局部變量引用 → 懸空引用,UB
  2. 2. vector& ref = vec[0]; 觸發擴容後失效 3. const int& r = 10; 延長臨時量壽命(合法),但 int& r = 10; 非法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved