是否可以在(main)中声明一个动态数组,但在另一个函数中使用malloc?我的意思是像这样
.
.
int main(void)
{
.
.
int **array;
.
.
}
void function(int **arr)
{
.
array = (**int) malloc .......
.
}
是的,这是可能的,但不是像你建议的那样,而是像这样。
int main(void)
{
.
int *array;
function(&array);
.
}
void function(int **arr)
{
.
*array = malloc(..) // no cast is needed here
.
}
而你不需要的 (**int)
错,应该是 (int*)
.
还请阅读 本篇 这几乎是你问题的重复。
是的,是可以这样的。
int main(void)
{
int *array;
function(&array);
}
void function(int **arr)
{
.
*arr = (int *) malloc .......
.
}
是的,接收一个指向指针的指针。
void function(int **array, size_t elements)
{
*array = malloc(sizeof(int) * elements);
if (*array == NULL)
{
// raise error
}
}
int main(void)
{
int *array;
function(&array, 10);
return 0;
}
另一个选择是返回函数中的地址(分配的空间)。
int *function(size_t elements)
{
int *array = malloc(sizeof(int) * elements);
if (array == NULL)
{
// raise error
}
return array;
}
int main(void)
{
int *array = function(10);
return 0;
}