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

C語言數組作函數參數深度解析:地址傳遞、雙向修改與多維數組技巧

     編輯:關於C語言

數組名作參數 vs 數組元素作參數

特性數組元素作參數數組名作參數
類型要求元素類型與形參一致即可實參形參必須同類型數組
內存分配形參實參各自分配,值傳遞形參不分配內存,傳遞首地址
數據傳遞單向:實參→形參,形參修改不影響實參共享內存:形參修改實參同步變化

核心機制:地址傳遞

數組名即首地址。調用時將實參數組首地址賦給形參數組名,二者共享同一內存區。

float aver(float a[5]) { ... }
float sco[5]; aver(sco);  // sco 首地址傳給 a,a 與 sco 共用內存

實戰驗證:負值歸零

void nzp(int a[5]) {
    for(int i=0;i<5;i++) if(a[i]<0) a[i]=0;
}

int main() {
    int b[5] = {1,-2,3,-4,5};
    nzp(b);  // b 內容被修改
    // 輸出: 1 0 3 0 5
}

關鍵注意事項

  1. 類型必須一致,否則報錯
  2. 長度可不一致:調用僅傳首地址,不檢查長度。形參長度大於實參會訪問越界,小於則處理不全
  3. 形參長度可省略:void nzp(int a[]) 或 void nzp(int a[], int n) 動態指定長度
  4. 多維數組參數:第一維可省略,如 int MA(int a[][10])

改進版:動態長度參數

void nzp(int a[], int n) {
    for(int i=0;i

總結

數組名作參數實質是地址傳遞,實現了函數間共享數組內存。利用此特性可高效處理大數據,但需注意長度匹配與越界風險。多維數組僅需指定除第一維外的所有維度。

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