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 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!