复制一个双打数组然后返回指针到基数

时间:2013-04-03 02:28:39

标签: c

我遇到了一项任务,但很难完成任务。本质上我是创建一个复制双精度数组,分配足够内存,然后返回指向新数组基础的指针的函数。我尝试了各种各样的东西,但不相信我已经把事情弄好了......

这是我到目前为止所做的:

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],但这会导致地址不断变化。任何帮助赞赏;只需要走上正确的轨道。

3 个答案:

答案 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。

相关问题