C语言定义并初始化一个二维数组(利用指针数组)

C语言定义并初始化一个二维数组(利用指针数组),可以实现二位数组的每一行的元素个数不同

1.代码如下

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

int main() {
    // arr是一个指针数组,即这个数组的所有元素都是指针,每一个元素都指向一个int型数组,每一个int型数组的长度可以不同
    int* arr[3] = {
        (int*)malloc(sizeof(int) * 3), \
        (int*)malloc(sizeof(int) * 6), \
        (int*)malloc(sizeof(int) * 4)
    };

    for (int i = 0; i < 3; i++) {
        // arr[0]是一个指针
        scanf("%d", &arr[0][i]);
    }

    for (int i = 0; i < 6; i++) {
        // arr[1]是一个指针
        scanf("%d", &arr[1][i]);
    }

    for (int i = 0; i < 4; i++) {
        // arr[2]是一个指针
        scanf("%d", &arr[2][i]);
    }

    // 释放指针数组中的每一个指针所指向的内存空间, 并将指针置空
    for (int i = 0; i < 3; i++) {
        free(arr[i]);
        arr[i] = NULL;
    }

    return 0;
}

2.代码可视化(pythontutor.com)

由于pythontutor.com不支持scanf的输入,因此去掉了代码中的scanf函数。但是不影响理解指针数组

posted @ 2023-08-06 20:13  Guanjie255  阅读(200)  评论(0编辑  收藏  举报