我如何在一个分配C中动态分配2D数组

Avi*_*iya 1 c malloc allocation

您能帮我弄清楚如何在一个分配调用中分配2D数组吗?

我试着做:

int ** arr =(int **)malloc(num * num * sizeof(int *));

但是它不起作用。

num 是行和列。

chu*_*ica 5

我如何在1分配C中动态分配array2D

让我们从2D数组开始:2D数组或“ int数组4的数组3”的
示例

int arr1[3][4];
arr1[0][0] = this;
Run Code Online (Sandbox Code Playgroud)

OP的代码声明了一个指向int的指针,而不是2D数组或2D数组的指针。
顺便说一句,演员不需要。

int** arr = (int**)malloc(num * num * sizeof(int*));
Run Code Online (Sandbox Code Playgroud)

代码可以为2D数组分配内存,并返回指向该内存的指针。 指向int数组6的数组5的指针

 int (*arr2)[5][6] = malloc(sizeof *arr2);
 if (arr2 == NULL) return EXIT_FAILURE;
 (*arr2)[0][0] = this;
 return EXIT_SUCCESS;

 // or with Variable Length Arrays in C99 and optionally in C11
 int (*arr3)[num][num] = malloc(sizeof *arr3);
 (*arr3)[0][0] = that;
Run Code Online (Sandbox Code Playgroud)

另外,代码可以为一维数组分配内存并返回指向该内存的指针。 指向int数组8的指针。有时,这通常是人们想要的“分配2D”数组,实际上是指向1D数组的指针

 int (*arr4)[8] = malloc(sizeof *arr4 * 7);
 arr4[0][0] = this;

 // or
 int (*arr5)[num] = malloc(sizeof *arr5 * num);
 arr5[0][0] = that;
Run Code Online (Sandbox Code Playgroud)