C - malloc - conversion invalide de void * en double *
Je veux écrire une fonction qui crée une copie d'un double tableau à l'aide de pointeurs.
C'est mon code pour l'instant:
#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);
}
J'ai 2 erreurs de compilation que je ne peux pas me débarrasser de. Je reçois
invalid conversion de void* double*
lorsque j'essaie d'allouer de la mémoire avec malloc, mais je ne peux pas comprendre ce que je fais mal.
source d'informationauteur Diana | 2015-05-06
Vous devez vous connecter pour publier un commentaire.
Vous utilisez un compilateur C++.
est valide en C. Il y a une conversion implicite de n'importe quel objet de type pointeur de
void *
.En C++, il n'est pas valide, il n'existe pas de conversion implicite, et vous avez besoin d'un plâtre:
Vous compiler le code c avec un compilateur c++.
Lorsque vous utilisez un compilateur c++, vous devez écrire du code c++, donc
malloc()
n'est pas si courant en c++, au lieuserait bon de code c++, si vous avez besoin de
free()
le pointeur, vous devezVous pouvez bien sûr utiliser
malloc()
en c++, mais ce serait comme çaparce que
void *
en c++ n'est pas convertie à tout type pointeur automatiquement.En c, cependant, il n'est pas nécessaire pour le casting, et en fait, elle rend le code inutilement laid en dehors de cacher les bugs de votre programme, cehck ici Dois-je cast le résultat de la fonction malloc?.