Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cách truyền mảng 2D (2D array) làm tham số trong C


Trong C, mảng 2 chiều có thể truyền vào hàm nếu biết kích thước cột tại thời điểm biên dịch (hoặc dùng biến toàn cục const).

Ví dụ: Truyền mảng 2D với kích thước cố định

#include <stdio.h>

const int R = 4;
const int C = 3;

void func(int a[R][C]) {
  int i, j;
  for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
      a[i][j] += 5;
}

int main() {
  int a[R][C];
  int i, j;
  for (i = 0; i < R; i++)
    for (j = 0; j < C; j++)
      a[i][j] = i + j;

  printf("Initial 2-D array is:\n");
  for (i = 0; i < R; i++) {
    for (j = 0; j < C; j++) printf("%d ", a[i][j]);
    printf("\n");
  }

  func(a);

  printf("Modified 2-D array is:\n");
  for (i = 0; i < R; i++) {
    for (j = 0; j < C; j++) printf("%d ", a[i][j]);
    printf("\n");
  }
  return 0;
}

Kết quả

Initial 2-D array is:
0 1 2
1 2 3
2 3 4
3 4 5
Modified 2-D array is:
5 6 7
6 7 8
7 8 9
8 9 10

Lưu ý: Cách này yêu cầu số cột (C) là hằng số tại compile-time. Đối với mảng kích thước động, dùng con trỏ đến mảng 1D hoặc cấp phát động.