无法将double转换为double

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部分显示“从int到double的无效转换”.

用任何浮点值(如5.0)替换rand()会显示“无法将double转换为double”.

(双)rand()或(double)5抛出类似的错误.

*当然在这个功能的早期阅读,我只是在这里切断它.

这可能有什么不对?

最佳答案 您引用的错误消息不完整.它在double之后缺少一个星号:*(arr i)的类型是double *而不是double,并且你不能将int或double转换为double *.

大概是你的意思

        *(*arr + i) = rand();

要么

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