无法将double转换为double

4
void load(int *n, double *x, double **arr, bool randomize)
{
    *arr = (double*)malloc((*n + 1) * sizeof(double));
    srand(time(NULL));
    for(int i = 0; i <= *n; i++)
    {
        if(! randomize)
        {   
            scanf("%lf", *arr + i);
        }
        else
        {
            *(arr + i) = rand();
        }
    }
}

基于 randomize 参数,我想用随机或自定义的双精度数填充数组。然而,这段代码无法编译,它显示了 else 部分的 "invalid conversion from int to double"

使用任何浮点值(例如 5.0)替换 rand() 将显示 "cannot convert double to double"。

(double) rand()(double) 5 抛出类似的错误。

当然,*n 在此函数中早先已读取,这里只是被省略了。

这里可能有什么问题?

2个回答

1
你引用的错误信息是不完整的。在double后面缺少一个星号: *(arr + i)的类型是double*而不是double,你不能将intdouble转换为double*
可能你的意思是:
        *(*arr + i) = rand();

或者

        (*arr)[i] = rand();

学习C语言中的指针和引用真是太难了,谢谢! - user2251921
2
@user2251921:不客气。顺便说一下,C语言中的引用很容易——根本没有引用!;-) - NPE

0

*(arr + i) = rand(); -> (*arr)[i] = rand();

*(arr + i) = rand(); 转换为 (*arr)[i] = rand();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接