動的2次元配列をC言語で定義する方法

C言語において、2次元の動的配列の定義はポインタのポインタを用いて実現可能である。以下にサンプルコードを示す。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int rows, cols;
    
    printf("请输入二维数组的行数和列数:\n");
    scanf("%d", &rows);
    scanf("%d", &cols);

    // 动态分配内存空间
    int **arr = (int **)malloc(rows * sizeof(int *));
    for (int i = 0; i < rows; i++) {
        arr[i] = (int *)malloc(cols * sizeof(int));
    }

    // 输入数组元素
    printf("请输入二维数组的元素:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    // 输出数组元素
    printf("二维数组的元素为:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    // 释放内存空间
    for (int i = 0; i < rows; i++) {
        free(arr[i]);
    }
    free(arr);

    return 0;
}

上記のコードでは、まず malloc 関数で 2 次元配列の格納に必要なメモリ領域を動的に確保し、二つの for ループで 2 次元配列の要素を順番に入力します。そして、二つの for ループで 2 次元配列の要素を画面に出力します。最後に、free 関数で動的に確保したメモリ領域を解放します。

bannerAds