C: kann Nicht initialisieren variable mit einem rvalue vom Typ void*
Ich habe den folgenden code:
int *numberArray = calloc(n, sizeof(int));
Und ich bin nicht in der Lage zu verstehen, warum ich die folgende Fehlermeldung.
Cannot initialize a variable of type 'int *' with an rvalue of type 'void *'`.
Danke.
int *numberArray = (int*)calloc(n, sizeof(int));
Seine so genannte casting.In C++
malloc
und calloc
erfordert eine Typumwandlung.Gibt es keine Dokumentation für
calloc
mehr?Gut, Sie können auch
new
wenn es C++.Ich ersetzen calloc mit neuen, aber jetzt sagt er: Erwartet wird eine geben
InformationsquelleAutor user3662185 | 2014-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Compiler-Fehlermeldung ist sehr klar.
Den Rückgabewert
calloc
istvoid*
. Weisen Sie Sie einer Variablen vom Typint*
.Das ist ok, mit einem C-Programm, aber nicht mit einem C++ - Programm.
Können Sie ändern, die Zeile zu
Aber eine bessere alternative wird die Verwendung der
new
Betreiber, um Speicher zuzuweisen. Nachdem alle, Sie sind mit C++.InformationsquelleAutor R Sahu
Zusammenfassen, da
calloc
gibt einevoid*
(generic pointer) auf den Erfolg der Zuweisung von Speicher, müssen Sie die Typumwandlung, wie diese in C++:Wenn es C ist, kann man noch überspringen dieser Besetzung.
Oder verwenden Sie
new
:InformationsquelleAutor
Bist du mit C memory re-allocation-Stil in einem C++ - code.
Was Sie verwenden möchten, ist
new
in C++Also code:
Alternativ können Sie wechseln Sie zurück zu C, und verwenden Sie calloc mit casting.
InformationsquelleAutor AK_
Syntax für calloc ist:
void* calloc (size_t num, size_t size);
calloc zurückgegeben void-Zeiger. In Ihrem code , den Sie zuweisen wollen, void-Zeiger-Ganzzahl Zeiger. So sind Sie immer Cannot initialize a variable of type 'int *' mit einem rvalue of type 'void *'. So typecast der void-Zeiger zuweisen, bevor es so
*numberArray = (int *) calloc(n, sizeof(int));
InformationsquelleAutor Hussain