我遇到了一项任务,但很难完成任务。本质上我是创建一个复制双精度数组,分配足够内存,然后返回指向新数组基础的指针的函数。我尝试了各种各样的东西,但不相信我已经把事情弄好了......
这是我到目前为止所做的:
int *arrayCopyAndBase(double *array, int size)
{
int i;
int *arrayCopy;
array_copy = malloc(size * sizeof(int));
for (i = 0; i < size; i++)
{
arrayCopy[i] = array[i];
}
return &arrayCopy;
}
错误我肯定很明显,但作为初学者,我很难发现它们。我知道&amp; arrayCopy应该是&amp; arrayCopy [0],但这会导致地址不断变化。任何帮助赞赏;只需要走上正确的轨道。
答案 0 :(得分:1)
几个问题:
您正在使用sizeof(int)
。你正在分配一个双打数组。 Ints与双打并不是一回事。
arrayCopy
是指向整数的指针。这应该是指向double
您正在返回指向int
的指针。您应该返回指向double
的指针。
return语句接受指针的地址。您只需要返回指针的值。
您不需要for
循环。使用memcpy
更加明智。
答案 1 :(得分:1)
您的退货声明不正确。当前,当您确实要返回一组int(int**
)时,您将返回一个指向int数组(int*
)的指针。我很惊讶你的编译器没有抱怨这个(或许它是,但你没有提到它。)
尝试:
return arrayCopy;
答案 2 :(得分:0)
当你使用malloc时,它返回一个void指针,你需要输入它作为double。