malloc - invalid conversion de void* 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.

  • On dirait que vous êtes en utilisant un compilateur C++ au lieu de C.
  • Comment êtes-vous de la compilation? Il semble que vous utilisez peut-être un c++ compilateur
  • C permet void* pointeurs être converties ou de tout autre type de pointeur. C++ nécessite un cast explicite.
  • Mais si vous êtes à l'aide de C++, vous devez soit utiliser std::vector ou new double[size].
  • Remplacez le suffixe de votre fichier source .rpc .c et puis le compiler en C plutôt qu'en C++.
InformationsquelleAutor Diana | 2015-05-06