C言語で二次元配列を反復処理するにはどうすればよいですか?
2次元配列を反復処理する方法には、一般的な方法が2つあります。
- 2つの入れ子になった for ループを使用する:行と列のそれぞれを反復処理するために 2つの入れ子になった for ループを使用する。外側のループは行の数と要素を管理し、内側のループは列の数と要素を管理する。例:
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
- 配列を1次元として捉え、ポインタで順番にアクセスする:二次元配列を1次元の配列として考え、ポインタを使用して配列要素に逐次アクセスします。ポインタ変数に配列の最初のアドレスを指定し、オフセットを使用して他の要素にアクセスします。たとえば:
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int *p = &arr[0][0];
int i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 4; j++) {
printf("%d ", *(p + i * 4 + j));
}
printf("\n");
}
どちらの方法も二次元配列を走査するために使用できますが、どちらを使用するかは実際のニーズと個人の習慣によって異なります。