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

C語言函數參數傳遞:值傳遞 vs 地址傳遞 對比演示

     編輯:關於C語言

核心差異

  • 值傳遞:形參是實參副本,函數內修改不影響實參。
  • 地址傳遞:形參是指針,函數內通過指針修改影響實參。

演示代碼

[cpp]
#include 

void fa(int a) {        // 值傳遞
    a++;
    printf("在函數fa中:a=%d\n", a); // 2
}

void fb(int *a) {       // 地址傳遞
    (*a)++;
    printf("在函數fb中:*a=%d\n", *a); // 2
}

int main() {
    int n = 1;
    printf("調用fa前:n=%d\n", n); // 1
    fa(n);
    printf("調用fa後:n=%d\n", n); // 1(未變)
    fb(&n);                    // 傳地址
    printf("調用fb後:n=%d\n", n); // 2(已變)
    return 0;
}

輸出結果

調用fa前:n=1
在函數fa中:a=2
調用fa後:n=1
在函數fb中:*a=2
調用fb後:n=2

應用場景

  • 需修改實參值 → 傳地址(指針)。
  • 大結構體避免拷貝 → 傳指針(const 保護不修改)。
  • 數組名退化為指針 → 本質是地址傳遞。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved