Pourquoi devons-nous mettre un opérateur & code> dans
scanf () code> pour stocker des valeurs dans un tableau entier mais pas pendant que vous stockez une chaîne dans un tableau de charme?
char s[5]; scanf("%s",s);
5 Réponses :
en C, les tableaux et les pointeurs sont liés. p>
scanf ("% d", A + i) code> fonctionne aussi. p>
% d code> et
% s code> Il suffit de dire
scanf code> à quoi s'attendre mais dans les deux cas, il s'attend à une adresse p>
% s code> Il suffit de dire à
scanf code> pour attendre une chaîne qui est une chaîne
\ 0 code> terminée, que ce soit dans le tableau de caractères ou non
scanf code> ne se soucie pas. p>
Parce que les matrices de caractères sont déjà em> pointeurs. P>
Vous pouvez penser à des tableaux C comme pointeurs sur une quantité de RAM attribuée à la pile. Vous pouvez même utiliser les opérations de pointeur sur eux au lieu d'indexation du tableau. * A code> et
A [0] code> produisent les deux mêmes résultat (renvoyer le premier caractère dans la matrice). P>
Parce que les matrices de caractères sont déjà des pointeurs. code> ils ne sont pas.
Quand ce mythe meurt-il?
Scanf accepte un pointeur sur tout ce que vous mettez la valeur dans. Dans le premier cas, vous transmettez une référence à l'INT spécifique à la position I dans votre réseau entier. Dans la deuxième instance, vous passez à l'ensemble de la matrice pour scanner. En C, les tableaux et les pointeurs sont synonymes et peuvent être utilisés de manière interchangeable (en quelque sorte). La variable S est en fait un pointeur à la mémoire qui a un espace contigu pour 5 caractères. P>
Lorsque vous utilisez le nom d'un tableau dans une expression (sauf comme l'opérande de Lorsque vous utilisez un int (ou court, long, char, float, double, etc.) dans une expression (à nouveau, sauf comme l'opérande de Tailleof code> ou l'adresse de l'opérateur
& code>), il évaluera à l'adresse du premier élément de cette matrice - c'est-à-dire une valeur de pointeur. Cela signifie qu'aucun
& code> est nécessaire pour obtenir l'adresse. P>
Tailleof code> ou
& code >) Il évalue la valeur de cet objet. Pour obtenir l'adresse (c'est-à-dire une valeur de pointeur), vous devez utiliser le
& code> pour prendre l'adresse. P>
Toutes les variables utilisées pour recevoir des valeurs via STINGS sont lus dans les tableaux de caractères et le nom de la matrice sans index est l'adresse du premier élément du tableau.SO pour lire une chaîne dans une adresse de réseau de caractères, nous utilisons p>
Dans cette affaire, l'adresse est déjà un pointeur et ne doit pas ne pas être précédée de l'opérateur. p> li>
ul> scanf () code> doivent être transmis par leurs adresses. Cela signifie que tous les arguments doivent être signalés sur les variables utilisées comme arguments. P>
scanf ("% d", & comptez); code> p> li>
scanf ("% s", adresse); code> p> li>
c-faq.com/stdio/scanf1a.html