0

我收到了一项任务,但很难完成它。本质上,我要创建一个函数,该函数复制一个双精度数组,分配足够的内存,然后返回一个指向新数组基址的指针。我尝试了各种事情,但不相信我已经做对了......

这是我到目前为止所拥有的:

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;
}

我确信错误很明显,但作为初学者,我很难发现它们。我知道 &arrayCopy 可能应该是 &arrayCopy[0] 但这会导致地址不断变化。任何帮助表示赞赏;只需要走上正确的轨道。

4

3 回答 3

1

几个问题:

你正在使用sizeof(int). 您正在分配一个双精度数组。整数与双精度数不同。

arrayCopy是一个指向整数的指针。这应该是一个指向双精度的指针

您正在返回一个指向 a 的指针int。您应该返回一个指向 a 的指针double

return 语句采用指针的地址。您只需要返回指针的值。

你不需要for循环。使用memcpy更明智。

于 2013-04-03T02:31:16.510 回答
1

您的退货声明不正确。int**当前,当您实际上想要返回一个整数数组 () 时,您正在返回一个指向整数数组 ( ) 的指针int*。我很惊讶你的编译器没有抱怨这个(或者可能是,但你没有提到它)。

尝试:

return arrayCopy;
于 2013-04-03T02:31:26.937 回答
0

当您使用 malloc 时,它返回一个 void 指针,您需要将其类型转换为 double。

于 2013-04-03T03:28:00.587 回答