Avi*_*iya 1 c malloc allocation
您能帮我弄清楚如何在一个分配调用中分配2D数组吗?
我试着做:
int ** arr =(int **)malloc(num * num * sizeof(int *));
但是它不起作用。
num
是行和列。
我如何在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)