C言語で2次元配列を参照する方法は何ですか?

C言語では、ポインタを使用して2次元配列を参照することができます。以下は2次元配列を参照するためのいくつかの一般的な方法です。

  1. ポインタ配列の使用:ポインタ配列を作成し、各ポインタが1次元配列を指すようにします。例えば、int *arr[5] は、5つのポインタを含む配列であり、それぞれのポインタがint型の1次元配列を指します。
  2. 二次元配列の先頭アドレスを指すポインタを使用する:ポインタ変数を宣言し、それを二次元配列の先頭アドレスに指すようにします。例えば、int (*arr)[5]は、5つのint型要素を含む一次元配列を指すポインタを表します。
  3. ポインタのポインタを使用する:ポインタを指すポインタ変数を宣言し、それを2次元配列の先頭アドレスに指定します。例えば、int **arrはint型のポインタを指すポインタを表し、2次元配列を参照するために使用できます。

以下の例は、ポインタ配列を使用して二次元配列にアクセスする方法を示すコードサンプルです。

#include <stdio.h>

int main() {
    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    int *ptr[3];

    // 将每个指针指向一维数组的首地址
    for (int i = 0; i < 3; i++) {
        ptr[i] = arr[i];
    }

    // 使用指针数组引用二维数组
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf("%d ", ptr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

上記の例のコードを実行すると、以下が出力されます:

1 2 3 4 
5 6 7 8 
9 10 11 12

注意:上記のコード例では、2次元配列の各行には4つの要素が含まれているため、ポインタ配列の型はint *ptr[3]になります。列数が異なる場合は、ポインタ配列の型とループ方法を適切に変更する必要があります。

bannerAds