Maison >développement back-end >C++ >Pourquoi `t`, `&t[0]` et un pointeur vers `t` ont-ils la même adresse ?

Pourquoi `t`, `&t[0]` et un pointeur vers `t` ont-ils la même adresse ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 08:12:09138parcourir

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

Pourquoi t, &t[0] et t convertis en pointeur ont la même adresse

Un tableau est un bloc de mémoire contigu contenant des éléments du même type de données. Lorsque vous déclarez un tableau, le compilateur alloue un bloc de mémoire et crée des pointeurs vers chaque élément de ce bloc.

Cas 1 : t et &t[0]

Lorsque vous utilisez t seul (sans aucun indice), il subit une conversion tableau en pointeur, qui génère un pointeur vers le premier élément du tableau. Ce comportement équivaut à utiliser &t[0], qui renvoie explicitement l'adresse du premier élément. Par conséquent, t et &t[0] ont la même valeur.

Cas 2 : &t

Cependant, lorsque vous appliquez l'opérateur & à t, ce n'est pas le cas. déclencher la conversion tableau en pointeur. Au lieu de cela, &t prend directement l'adresse de t lui-même, ce qui entraîne un pointeur vers l'ensemble du tableau.

En mémoire, le premier élément du tableau et le début du tableau résident au même emplacement. Par conséquent, les pointeurs t, &t[0] et u (qui est un pointeur vers t) ont tous la même adresse.

Explication de sortie :

Le donné le code démontre ce comportement :

int t[10];
int * u = t;

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;

Sortie :

0045FB88 0045FB88
0045FB88 0045FB7C

La sortie montre que t, &t[0], et u ont la même valeur (0045FB88), confirmant leur équivalence en tant que pointeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn