C言語で2次元配列を1次元配列に変換するにはどうすればよいか

C言語では、2次元配列を1次元配列に変換する操作は、2次元配列をループで走査し、各要素を1次元配列に格納することで実現できます。実装方法は以下のようになります。

#include <stdio.h>

void convert2DTo1D(int arr[][3], int row, int col, int *result) {
    int k = 0;
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            result[k++] = arr[i][j];
        }
    }
}

int main() {
    int arr2D[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int row = sizeof(arr2D) / sizeof(arr2D[0]);
    int col = sizeof(arr2D[0]) / sizeof(arr2D[0][0]);
    int size = row * col;

    int arr1D[size];
    convert2DTo1D(arr2D, row, col, arr1D);

    for (int i = 0; i < size; i++) {
        printf("%d ", arr1D[i]);
    }
    printf("\n");

    return 0;
}

上のコードでは、convert2DTo1D 関数は 2 次元配列、行数、列数、1 次元配列へのポインタを引数として受け取ります。関数の内部では 2 つのネストしたループを使って 2 次元配列を走査し、各要素を順次 1 次元配列に格納します。

main関数で、まず2次元配列の行数と列数を計算します。それから、行数と列数に基づいて1次元配列のサイズを計算します。続いて、1次元配列を宣言して、convert2DTo1D関数を呼び出して2次元配列を1次元配列に変換します。最後に、1次元配列を繰り返し処理して結果を出力します。

bannerAds