2013-04-06 4 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" в другом разделе.Невозможно преобразовать double to double

Замена rand() с любым значением поплавка, например, 5.0 показывает, что вместо этого «невозможно преобразовать double to double».

(double) rand() или (double) 5 сбрасывать подобные ошибки.

*n, конечно, прочитанный ранее в этой функции, я просто отключил его здесь.

Что может быть неправильным здесь?

ответ

2

Сообщение об ошибке, которое вы цитируете, является неполным. У этой отсутствует звездочка после double: тип *(arr + i) is double*, а не double, и вы не можете преобразовать int или double в double*.

Предположительно вы имеете в виду

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

или

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

Гм, изучая указатели и ссылки в С довольно фу * Cking трудно ;-) Спасибо! – user2251921

+2

@ user2251921: Добро пожаловать. Кстати, ссылки на C просты - их нет! ;-) – NPE

Смежные вопросы