Donc, je suis nouveau à C et j'ai des problèmes avec ce qui se passe avec cet avertissement. Que signifie l'avertissement et comment puis-je le réparer?
Le code que j'ai écrit est ici:
8 Réponses :
La fonction Lorsque vous écrivez Vous devez passer Vous devez également attribuer la mémoire pour scanf code> prend l'adresse em> d'une variable pour mettre le résultat.
Écriture scanf ("% d", & i> b> quelquevar) code> passera l'adresse em> du
du
/ Code> Variable (à l'aide de l'opérateur
& CODE> Unary).
La fonction scanf code> déposera un numéro dans la pièce de mémoire à cette adresse. (qui contient votre variable)
scanf ("% d", âge) code>, vous passez la valeur em> du
Âge code> variable à
scanf code>. Il essaiera de déposer un numéro dans la pièce de mémoire à l'adresse
0 code> (puisque
Âge code> est
0 code>), et obtenez horriblement foiré. < / p>
et âge code> à
scanf code>. p>
scanf code> Pour lire une chaîne dans
nom code>: p>
Vous devriez écrire scanf ("% d", et Âge) code>, comme la fonction code> scanf code> doit modifier em> la valeur de
Âge code>, d'où la nécessité de le transmettre "par adresse" et non "par valeur". P>
Cela signifie que cela s'attend à ce qu'un "int *" (c'est-à-dire un pointeur à un entier) mais vous le donnez "INT" qui est un entier. Pour résoudre ce problème, ajoutez et à vieillir dans la ligne Scanf pour devenir. P>
scanf ("% d \ n", âge); p>
Je suppose que sa plainte sur la ligne scanf ("% d \ n", âge); code> Le problème est que Scan F attend un pointeur à votre variable non la variable. Vous devez obtenir une adresse à la variable en perment un '& `et ça devrait aller. P>
L'avertissement signifie exactement ce qu'il dit: le compilateur s'attend à un pointeur sur Fix rapide: remplacer C passe tous les arguments par valeur, ce qui signifie que si vous passez une variable, seule la valeur de la variable est passée. La fonction de réception peut modifier cette valeur tout ce qu'il veut, mais la valeur d'origine n'est pas modifiée. Pour modifier la variable, vous devez transmettre une valeur qui pointe sur la variable en quelque sorte, laquelle en C est un pointeur. P>
Pour obtenir un pointeur sur une variable, préfixez-le avec Dans ce cas, vous voulez INT code> plutôt que d'un
int code> dans le
scanf code> appel. p>
Âge code> avec
et Âge code>, et tout fonctionnera. P>
& code>. Pour utiliser une variable, vous avez un pointeur, préfixez la valeur du pointeur avec
* code>. P>
scanf code> pour modifier la valeur de
Âge code>, vous devez donc la transmettre un pointeur. p>
char twenty_bytes[20] = ""; scanf("%s\n", twenty_bytes);
Le problème est la suivante:
char* name = "";
hey ami signifie récemment aujourd'hui, j'ai aussi passé ce sujet.don ne vous inquiétez pas, c'est simple.
problème dans les lignes de code ci-dessous: p> et P> scanf("%d\n", &age);