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

C++ 參數傳遞三大模式:值傳遞、指標傳遞、引用傳遞深度解析

     編輯:關於C++

核心概念釐清

C++ 函式參數傳遞方式有三種:值傳遞、指標傳遞、引用傳遞。理解它們的差異關鍵在於「形參」與「實參」的綁定關係,以及函式內部修改是否影響外部實參。

值傳遞

形參是實參的拷貝,單向傳值(實參 → 形參),函式內修改形參不影響外部實參。

#include <iostream>
using namespace std;

void func(int x) {
    x = x + 10;
}

int main() {
    int n = 0;
    func(n);
    cout << n << endl; // 輸出 0
    return 0;
}

指標傳遞

傳遞實參的記憶體位址,形參為指標。透過解參考修改指向的記憶體,會改變外部實參值。

void func(int *x) {
    *x = *x + 10;
}

int main() {
    int n = 0;
    func(&n);
    cout << n << endl; // 輸出 10
    return 0;
}

引用傳遞

形參是實參的別名,兩者綁定同一記憶體位置。修改形參等同修改實參。

void func(int &x) {
    x = x + 10;
}

int main() {
    int n = 0;
    func(n);
    cout << n << endl; // 輸出 10
    return 0;
}

引用的規則與限制

  • 宣告時必須初始化(指標可延遲)。
  • 不存在 NULL 引用,必須綁定合法物件(指標可為 nullptr)。
  • 初始化後不可重新綁定其他物件(指標可隨時改變指向)。

記憶體模型視覺化

宣告 int n = 1; 時:

  • 值 1 存放於某記憶體位址。
  • n 是該位址的「大名」(變數名)。
  • int &ref = n; 給同一位址取「小名」(引用),大名、小名指向同一值。

適用場景建議

傳遞方式適用情境副作用
值傳遞小型物件、不需修改實參、需語意上獨立拷貝拷貝成本、無法回傳修改
指標傳遞需修改實參、可選參數(傳 nullptr)、C 風格介面、大型物件避免拷貝需檢查空指標、語法較繁瑣
引用傳遞需修改實參、運算子多載、串流操作、大型物件避免拷貝不可為空、初始化後不可重綁定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved