Initialisation rend pointeur d'entier sans fonte de C
Désolé si ce post vient de l'ignorance, mais je suis encore très novice en C, donc je n'ai pas une grande compréhension. Droit maintenant, je suis à essayer de comprendre les pointeurs.
J'ai fait ce bout de code pour tester si je peux changer la valeur de l'élément b de la fonction de changement, et le porter sur le dos dans la fonction main(sans retour) en passant le pointeur.
Cependant, j'ai une erreur qui dit que.
Initialization makes pointer from integer without a cast
int *b = 6
De ce que je comprends,
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int * b = 6;
change(b);
printf("%d", b);
return 0;
}
Malade, je suis vraiment inquiète, c'est la fixation de cette erreur, mais si ma compréhension de pointeurs est complètement faux, je ne serais pas opposé à la critique.
Depuis le
change
fonction ne retourne rien d'utile, vous devez le déclarer void
.OriginalL'auteur Jeff H | 2015-10-29
Vous devez vous connecter pour publier un commentaire.
Pour le faire fonctionner réécrire le code comme suit -
Le code ci-dessus va travailler.
En C, lorsque vous souhaitez modifier la valeur d'une variable dans une fonction, vous "passer la Variable dans la fonction par Référence". Vous pouvez en lire plus à ce sujet ici - Passage par Référence
Maintenant l'erreur signifie que vous tentez de stocker un nombre entier dans une variable est un pointeur, sans typecasting. Vous pouvez faire cette erreur d'aller loin en modifiant cette ligne comme suit (Mais le programme ne fonctionnera pas parce que la logique sera toujours fausse )
OriginalL'auteur Soren Goyal
Peut-être que vous avez voulu pour ce faire:
OriginalL'auteur BobRun
OriginalL'auteur milevyo
Peut-être trop tard, mais comme un complément pour le reste des réponses, juste mes 2 cents:
Dans les déclarations de pointeur, vous ne devez attribuer l'adresse d'autres variables d'e.g "&a"..
OriginalL'auteur udarH3