在尝试解决称为螺旋矩阵的问题时,我遇到了一个问题,即无法使用 calloc 初始化函数内部的数组。
/*
* Note: The returned array must be malloced, assume caller calls free().
*/
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
*returnSize = matrixSize * matrixColSize[0];
int list[] = calloc(0, (*returnSize)*sizeof(int));
return list;
}
在尝试编译时遇到此异常有人可以解释为什么会发生这种情况吗
solution.c: In function ‘spiralOrder’
Line 6: Char 18: error: invalid initializer [solution.c]
int list[] = calloc(0, (*returnSize)*sizeof(int));
^~~~~~
数组需要一个初始化列表来初始化它们。但在这种情况下,您实际上并不需要数组,因为一旦函数返回,返回指向本地内存的指针将无效。
您想要将
calloc
的返回值分配给一个指针并返回该指针。另外,您调用 calloc
的方式不正确。第一个参数是元素的数量,第二个参数是每个元素的大小。
int *list = calloc(*returnSize, *sizeof(int));
return list;