C言語で2次元配列を参照する方法は何ですか?
C言語では、ポインタを使用して2次元配列を参照することができます。以下は2次元配列を参照するためのいくつかの一般的な方法です。
- ポインタ配列の使用:ポインタ配列を作成し、各ポインタが1次元配列を指すようにします。例えば、int *arr[5] は、5つのポインタを含む配列であり、それぞれのポインタがint型の1次元配列を指します。
- 二次元配列の先頭アドレスを指すポインタを使用する:ポインタ変数を宣言し、それを二次元配列の先頭アドレスに指すようにします。例えば、int (*arr)[5]は、5つのint型要素を含む一次元配列を指すポインタを表します。
- ポインタのポインタを使用する:ポインタを指すポインタ変数を宣言し、それを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]になります。列数が異なる場合は、ポインタ配列の型とループ方法を適切に変更する必要があります。