J'ai vu ce fait en C avant:
#define MY_STRING "12345"
...
#define SOMETHING (MY_STRING + 2)
Ce n'quelque CHOSE de développé pour, ici? Est-ce légal? Ou veulent-ils dire ça?:
#define SOMETHING (MY_STRING[2])
J'ai vu ce fait en C avant:
#define MY_STRING "12345"
...
#define SOMETHING (MY_STRING + 2)
Ce n'quelque CHOSE de développé pour, ici? Est-ce légal? Ou veulent-ils dire ça?:
#define SOMETHING (MY_STRING[2])
Lorsque vous avez un tableau ou un pointeur, p+x
est équivalent à &p[x]
. Donc, MY_STRING + 2
est équivalent à &MY_STRING[2]
: il donne l'adresse de la troisième caractère de la chaîne.
Remarquez ce qui se passe lorsque vous ajoutez 0. MY_STRING + 0
est le même que &MY_STRING[0]
, qui sont tous deux la même que l'écriture tout simplement MY_STRING
depuis une chaîne de référence est rien de plus qu'un pointeur vers le premier caractère de la chaîne. Heureusement, ensuite, l'identité de l'opération "ajouter 0" est un non-op. Considère ce fait comme une sorte d'unité mentale test que nous pouvons utiliser pour vérifier que notre idée sur ce qu' +
moyen est correct.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.