11
votes

Pourquoi Scanf doit prendre l'adresse de l'opérateur

Comme le dit le titre, je me demande toujours pourquoi scanf doit prendre l'adresse de opérateur (&).


0 commentaires

6 Réponses :


30
votes

Parce que C ne dispose que des paramètres « passe par la valeur », donc de passer une « variable » pour mettre une valeur dans, vous devez passer son adresse (ou un pointeur vers la variable).


0 commentaires

7
votes

parce qu'il a besoin l'adresse pour placer la valeur qu'il se lit. Si vous vous déclarez variable en tant que pointeur, le scanf n'aura pas besoin du & .


0 commentaires

1
votes

Lorsque vous entrez quelque chose avec le périphérique d'entrée standard (généralement du clavier), les données qui interviennent doivent être stockées quelque part. Vous devez point quelque part dans la mémoire afin que les données puissent être stockées là-bas. Pour POINT Un emplacement de mémoire, vous avez besoin de l'adresse de cet emplacement. Vous devez donc transmettre l'adresse de votre variable en utilisant l'opérateur & avec scanf () .


0 commentaires

3
votes

Tous les autres ont bien décrit que SSCANF a besoin de mettre sa production quelque part , mais pourquoi ne pas le retourner? Becuase il doit renvoyer beaucoup de choses - il peut remplir plus d'une variable (entraîné par la mise en forme) et renvoie un Int indiquant combien de ces variables remplies.


0 commentaires

14
votes

scanf ne prend pas "l'adresse de l'opérateur (&)". Il faut un pointeur . Le plus souvent, le pointeur de la variable de sortie est obtenu en utilisant l'adresse de l'opérateur dans l'appel de scanaf, par exemple xxx

mais ce n'est pas le seul moyen de le faire. Ce qui suit est tout aussi valide: xxx

De même, nous pouvons faire la même chose avec le code suivant: xxx


1 commentaires

J'ai fait des modifications, s'il vous plaît vérifier



1
votes

Comme la valeur va être stockée, (où?), dans l'adresse mémoire. Donc, Scanf () traite avec (&) opérateur.


0 commentaires