int t[10];
int * u = t;
cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
Production:
0045FB88 0045FB88
0045FB88 0045FB7C
La sortie pour u
est logique.
Je comprends que t
et &t[0]
devrait avoir la même valeur, mais comment se fait-il &t
est également le même? Que signifie & t?
Lorsque t
est utilisé seul dans l'expression, une conversion de tableau en pointeur a lieu, cela produit un pointeur vers le premier élément du tableau.
Lorsque t
est utilisé comme argument du &
, aucune conversion n'a lieu. Le &
prend alors explicitement l'adresse de t
(le tableau). &t
est un pointeur sur le tableau dans son ensemble.
Le premier élément du tableau est à la même position en mémoire que le début du tableau entier, et donc ces deux pointeurs ont la même valeur.
Le type réel de t
est int[10]
, alors &t
est l'adresse du tableau.
Aussi, int[]
convertit implicitement en int*
, donc t
convertit à l'adresse du premier élément du tableau.