Dans votre code:
m[1] - m[0]
désigne un pointeur de la soustraction qui vous donne la différence des deux pointeurs basés sur le type. Dans ce cas, les deux pointeurs sont différenciés par 3 éléments, de sorte que le résultat est 3.
Pour citer C11
standard, chapitre §6.5.6
Lorsque les deux pointeurs sont soustraits, à la fois doit pointer sur le même objet array,
ou un au-delà du dernier élément du tableau d'objet, le résultat est à la différence de la
les indices des deux éléments du tableau. [...]
et
[...] En d'autres termes, si les expressions P
et Q
point de pour, respectivement, l' i
-th et j
-th éléments de
un objet de tableau, l'expression (P)-(Q)
a la valeur i−j
à condition que la valeur s'inscrit dans un objet de type ptrdiff_t
. [....]
Pour aider à mieux visualiser, veuillez voir l'image suivante
Ici, s
est un tableau à deux dimensions, définies comme s[4][2]
. Considérant le type de données de la matrice des consommateurs 2 octets chacun, veuillez suivre les éléments (index) et correspondant à l'emplacement de mémoire (arbitraire). Cela vous donnera une meilleure compréhension de la façon réellement dans la mémoire, les éléments du tableau sont contigus.
Donc, comme pour la représentation, s[0]
et s[1]
sont différenciés par deux éléments, s[0][0]
et s[0][1]
. Par conséquent, s[1] - s[0]
, donne un résultat de 2.