C言語で、2次元配列をポインタに代入する方法を教えてください。
C言語では,ポインタを使用して二次元配列にアクセスし,代入できます。二次元配列のアドレスをポインタ変数に代入することで実現できます。
以下にサンプルコードを示します。
#include <stdio.h>
int main() {
int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int (*ptr)[3]; // 声明一个指向含有3个int类型元素的一维数组的指针
ptr = arr; // 将二维数组的地址赋值给指针
// 通过指针遍历并访问二维数组的元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", *(*(ptr + i) + j));
}
printf("\n");
}
return 0;
}
配列arrは2次元配列ですこれは各要素が3個のint型要素を持つ1次元配列へポインタptrとしてします。arrのアドレスをptrに代入することでポインタを使って2次元配列の要素へアクセスし操作することができます。ループ内で*(*(ptr + i) + j)を使って2次元配列の要素へアクセスします。ここでptr + iは2次元配列のi行目を探し* j はi行目のj番目の要素を見つけます。最後に*を使ってポインタを逆参照して要素の値を得ます。
このコードを実行すると以下の結果が出力されます:
1 2 3
4 5 6
7 8 9