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;