Desidero scrivere una funzione che crei una copia di un array doppio utilizzando i puntatori. Questo è il mio codice finora:C - malloc - conversione non valida da void * a 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);
}
Ho 2 errori di compilazione che non riesco a sbarazzarsi. Ottengo
conversione non valida dal void * di raddoppiare *
quando si tenta di allocare la memoria utilizzando malloc, ma non riesco a capire quello che sto facendo male.
Sembra che tu stia utilizzando un compilatore C++ anziché C. – Barmar
Come stai compilando? Sembra che tu stia usando un compilatore 'C++' –
C consente di convertire i puntatori di 'void *' in/da qualsiasi altro tipo di puntatore. C++ richiede un cast esplicito. – Barmar