gpt4 book ai didi

c - malloc - 从 void* 到 double* 的无效转换

转载 作者:太空狗 更新时间:2023-10-29 16:31:30 25 4
gpt4 key购买 nike

我想编写一个使用指针创建 double 组副本的函数。到目前为止,这是我的代码:

#include <stdio.h>
#include <stdlib.h>

double* copy (double *array, int size)
{
double *v=malloc(sizeof(double)*size);
for (int i=0; i<size; i++)
*(v+i)=*(array+i);
return v;
}

int main ()
{
//double array[];
int size;
printf ("size= "); scanf ("%i",&size);
double *array=malloc(sizeof(double)*size);
for (int i=0; i<size; i++)
scanf("%f",&array[i]);
copy(array,size);
free(array);
}

我有 2 个无法消除的编译错误。我明白了

invalid conversion from void* to double*

当我尝试使用 malloc 分配内存但我无法理解我做错了什么时。

最佳答案

您正在使用 C++ 编译器。

double *array=malloc(sizeof(double)*size);

在 C 中有效。存在从任何对象指针类型到 void * 的隐式转换。

在 C++ 中它是无效的,没有这样的隐式转换,你需要一个转换:

double *array= (double *) malloc(sizeof(double)*size);

关于c - malloc - 从 void* 到 double* 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com