Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 复制一个双精度数组,然后返回一个指向基的指针_C - Fatal编程技术网

C 复制一个双精度数组,然后返回一个指向基的指针

C 复制一个双精度数组,然后返回一个指向基的指针,c,C,有人给我布置了一项任务,我很难完成它。本质上,我要创建一个复制一个双精度数组的函数,分配足够的内存,然后返回一个指向新数组基的指针。我尝试过各种各样的事情,但我不相信我已经做对了 这就是我到目前为止所做的: int *arrayCopyAndBase(double *array, int size) { int i; int *arrayCopy; array_copy = malloc(size * sizeof(int)); for (i = 0; i <

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

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

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;
}
int*数组复制数据库(双*数组,int大小)
{
int i;
int*阵列拷贝;
数组_copy=malloc(大小*sizeof(int));
对于(i=0;i
我确信错误是显而易见的,但作为一个初学者,我很难发现它们。我知道&arrayCopy应该是&arrayCopy[0],但这会导致地址不断变化。感谢任何帮助;只是需要走上正确的轨道

几个问题:

您正在使用
sizeof(int)
。您正在分配一个双倍数组。整数和双精度不是一回事

arrayCopy
是指向整数的指针。这应该是指向双精度计数器的指针

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

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


对于
循环,您不需要
。使用
memcpy
更明智。

您的返回语句不正确。当前,您正在返回一个指向整数数组(
int**
)的指针,而实际需要返回整数数组(
int*
)。我很惊讶你的编译器没有对此抱怨(或者可能是,但你没有提到)

尝试:


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

int*arrayCopy
你是故意转换成整数数组吗?@Tushar不是故意的,不是。我尝试了double,但结果导致程序崩溃。看看我的答案,然后随意将所有
int
更改回
double
。应该可以。按照建议做了更改-非常感谢。但是,每次运行程序的结果都不同。我假设这不应该发生?@JesterJeffrey当你说结果时,你是指函数返回的值吗?或函数返回的数组?值中的值。我使用的测试大小和数组保持不变。每次调用函数时,函数返回的值应该不同,因为
malloc
返回的值没有实际意义。这只是一种让计算机记住它在哪里存储东西的方法。此外,如果你喜欢我的答案,考虑投票或选择它,这是有道理的!我会的,谢谢你。非常感谢,并提供了我所需要的帮助。
return arrayCopy;