2013-04-06 163 views
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参数,我想用随机或自定义双精度数来填充数组。但是,此代码不能编译,它在其他部分显示"invalid conversion from int to double"无法将双精度转换为双精度

替换rand()与任何浮点值如5.0显示“不能将double转换为double”。

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

*n当然是在这个函数的前面读到的,我只是把它剪掉了。

这里有什么问题?

回答

2

您引用的错误消息不完整。它在double之后缺少一个星号:*(arr + i)的类型是double*而不是double,并且不能将intdouble转换为double*

想必你的意思

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

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

呃,学习C指针和引用是相当富他妈的难;-)谢谢! – user2251921 2013-04-06 15:58:27

+2

@ user2251921:不客气。顺便说一句,在C中的参考很容易 - 没有任何! ;-) – NPE 2013-04-06 16:21:50

0

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