Programme:
#include<stdio.h>
int main(void) {
int x[4];
printf("%p\n", x);
printf("%p\n", x + 1);
printf("%p\n", &x);
printf("%p\n", &x + 1);
}
Sortie:
$ ./a.out
0xbff93510
0xbff93514
0xbff93510
0xbff93520
$
Je suppose que ce qui suit est la sortie du programme ci-dessus. Par exemple:
x // 0x100
x+1 // 0x104 Because x is an integer array
&x // 0x100 Address of array
&x+1 // 0x104
Mais le résultat de la dernière déclaration est différent de ce à quoi je m'attendais. &x
est également l'adresse du tableau. Donc, incrémenter 1 sur ceci affichera l'adresse incrémentée de 4. Mais &x+1
donne l'adresse incrémentée de 10. Pourquoi?