C言語で二次元配列を引き渡す方法は何ですか?

C言語では、二次元配列を関数に引数として渡す方法は2つあります。

  1. 配列をポインタで渡す:
  2. 関数に二次元配列の先頭アドレスをパラメータとして渡す。
  3. 関数内では、配列要素にアクセスするためにポインタ操作を使用します。
  4. 以下はサンプルコードです。
  5. void func(int (*arr)[M], int row, int col) {
    // 配列要素へのポインタ操作を使用
    for (int i = 0; i < row; i++) {
    for (int j = 0; j < col; j++) {
    printf(“%d “, arr[i][j]);
    }
    printf(“\n”);
    }
    }int main() {
    int arr[N][M] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    int row = N;
    int col = M;

    // 配列の先頭アドレスを関数に渡す
    func(arr, row, col);

    return 0;
    }

  6. 配列を渡すために一次元配列を使用します。
  7. 2次元配列を1次元配列に変換します。
  8. 関数に一次元配列の最初の要素のアドレスをパラメータとして渡す。
  9. 関数の中で、配列の要素にアクセスする際には、インデックスを計算します。
  10. 以下はサンプルコードです:
  11. void func(int *arr, int row, int col) {
    // インデックス計算を使って配列要素にアクセスする
    for (int i = 0; i < row; i++) {
    for (int j = 0; j < col; j++) {
    printf(“%d “, arr[i * col + j]);
    }
    printf(“\n”);
    }
    }int main() {
    int arr[N][M] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    int row = N;
    int col = M;

    // 二次元配列を一次元配列に変換し、配列の先頭アドレスを関数に渡す
    func((int *)arr, row, col);

    return 0;
    }

どちらの方法も、二次元配列を関数に引数として渡すことができます。どちらの方法を選ぶかは、具体的な要件とプログラミングの習慣によります。

bannerAds