web-dev-qa-db-fra.com

Adresse d'un tableau

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?

34
quuxbazer

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.

33
Mankarse

Le type réel de t est int[10], alors &t est l'adresse du tableau.

Aussi, int[] convertit implicitement en int*, donc tconvertit à l'adresse du premier élément du tableau.

4
Abyx