C: Impossible d'initialiser la variable avec une valeur r de type void*
J'ai le code suivant:
int *numberArray = calloc(n, sizeof(int));
Et je suis incapable de comprendre pourquoi j'ai l'erreur suivante.
Cannot initialize a variable of type 'int *' with an rvalue of type 'void *'`.
Merci.
int *numberArray = (int*)calloc(n, sizeof(int));
Son appelé casting.En C++,
malloc
et calloc
besoin d'un type de fonte.Il n'y a pas de documentation pour
calloc
plus?Eh bien, vous pouvez également utiliser
new
si c'est le C++.- Je remplacer calloc à nouveau, mais maintenant, il dit: Attend un type
OriginalL'auteur user3662185 | 2014-06-15
Vous devez vous connecter pour publier un commentaire.
Le compilateur du message d'erreur est très clair.
La valeur de retour de
calloc
estvoid*
. Vous êtes de l'affecter à une variable de typeint*
.C'est ok avec un programme en C, mais pas avec un programme en C++.
Vous pouvez modifier cette ligne pour
Mais, une meilleure alternative est d'utiliser le
new
opérateur d'allouer de la mémoire. Après tout, vous êtes à l'aide de C++.OriginalL'auteur R Sahu
Pour résumer, depuis
calloc
renvoie unevoid*
(pointeur générique) sur la réussite de l'allocation de mémoire, vous devrez taper en fonte comme ça en C++:Si c'était le C, vous pouvez toujours sauter cette fonte.
Ou, utiliser
new
comme:OriginalL'auteur
Vous êtes à l'aide de C mémoire de ré-allocation de style dans un code C++.
Ce que vous voulez utiliser est
new
en C++Votre code deviendra donc:
Sinon, vous pouvez revenir en C et utiliser calloc, casting.
OriginalL'auteur AK_
Syntaxe pour calloc est:
void* calloc (size_t num, size_t taille);
calloc pointeur de type void. Dans votre code , vous essayez d'affecter vide pointeur de pointeur entier. De sorte que vous obtenez Ne peut pas initialiser une variable de type "int *" avec une rvalue de type 'void *'. Donc catalogué le vide pointeur avant de l'affecter comme ce
*numberArray = (int *) calloc(n, sizeof(int));
OriginalL'auteur Hussain