关于在二维数组中使用malloc的问题,其中一维数组在C中已知[重复]

ttvkxqim  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(135)
    • 此问题在此处已有答案**:

Heap allocate a 2D array (not array of pointers)(7个答案)
3天前关闭。
一般性问题。
我遇到过一个程序,它有一个二维数组,如ps [i][j],问题是我知道j的大小是3,但我不知道i的大小(这就是我想使用malloc和**free()**的原因。我怎样才能在这样的数组中使用malloc呢?)因为它不是一维数组而是二维数组,但问题是我不知道i的大小。

ps[?][3]

j的大小是已知的,其为3,但是i的大小是未知的。
感谢您宝贵的时间,我期待您的答复

8yparm6h

8yparm6h1#

您需要声明一个指向给定大小的数组的指针,例如unsigned int (*arr)[3],然后为该类型数组的i元素分配空间:

unsigned int (*arr)[3] = malloc(i * sizeof(unsigned int[3]));

更妙的是:

unsigned int (*arr)[3] = malloc(i * sizeof *arr);

然后按如下方式释放它:

free(arr);

相关问题