C - malloc - ungültige Umwandlung von void * nach double *

8

Ich möchte eine Funktion schreiben, die eine Kopie eines doppelten Arrays mit Zeigern erstellt. Das ist mein Code bisher:

%Vor%

Ich habe 2 Kompilierungsfehler, die ich nicht loswerden kann. Ich bekomme

  

ungültige Konvertierung von void * zu double *

wenn ich versuche, Speicher mithilfe von malloc zu reservieren, aber ich kann nicht verstehen, was ich falsch mache.

    
Diana 06.05.2015, 21:35
quelle

2 Antworten

25

Sie verwenden einen C ++ - Compiler.

%Vor%

ist in C gültig. Es gibt eine implizite Konvertierung von jedem Objektzeiger in void * .

In C ++ ist es nicht gültig, es gibt keine solche implizite Konvertierung, und Sie brauchen eine Umwandlung:

%Vor%     
ouah 06.05.2015, 21:38
quelle
3

Sie kompilieren C-Code mit einem C ++ - Compiler.

Wenn Sie einen C ++ - Compiler verwenden, sollten Sie C ++ - Code schreiben, daher ist malloc() in C ++ nicht so üblich, stattdessen

%Vor%

wäre guter C ++ - Code, wenn Sie free() den Zeiger benötigen, müssen Sie

%Vor%

Sie können natürlich malloc() in C ++ verwenden, aber es wäre so

%Vor%

weil void * in C ++ nicht automatisch in einen beliebigen Zeigertyp konvertiert wird.

In c ist die Besetzung jedoch nicht notwendig, und in der Tat macht es den Code unnötig hässlich, abgesehen von dem Verbergen von Fehlern aus Ihrem Programm, hier Ich werfe das Ergebnis von malloc? .

    
Iharob Al Asimi 06.05.2015 21:39
quelle

Tags und Links