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

C 語言二維陣列作為函式參數傳遞完整解析

     編輯:C 語言問答

陣列名在表達式中退化為指向首元素的指標。一維陣列 int a[3] 中 a 相當於 int*;二維陣列 int a[3][4] 中 a 相當於 int (*)[4](指向含 4 個 int 的陣列指標)。

函式宣告三種等價寫法

// 1. 陣列語法(第二維必須給定)
void func(int arr[][3]);

// 2. 指標語法
void func(int (*arr)[3]);

// 3. 簡化指標(不建議,失去型別檢查)
void func(int *arr);

呼叫端

int board[3][3] = {{'X','O','X'},{' ','X','O'},{'X',' ','O'}};
func(board);        // 正確:傳遞首列地址
func(board[0]);     // 同義
// func(board[3][3]); // 錯誤:傳遞單一元素值

函式內部存取

無論宣告為 arr[][3] 或 (*arr)[3],內部皆可用 arr[i][j] 雙下標存取,編譯器根據第二維大小計算位移。

核心觀念

  • 實參只能傳陣列名(首地址),不可加下標。
  • 形參第一維可省略,第二維必須指定(編譯器需知列長)。
  • 本質是傳遞指標,函式內修改內容會影響原陣列。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved