Maison > Article > développement back-end > Pourquoi l'adresse d'un tableau en C est-elle équivalente à l'adresse d'un pointeur vers son premier élément ?
Comprendre l'équivalence des adresses de tableau et des pointeurs convertis
Dans le langage de programmation C, il est courant de convertir un tableau en un pointeur vers son premier élément en utilisant la conversion tableau en pointeur. Cela soulève la question de savoir pourquoi l'adresse du tableau est la même que l'adresse du pointeur converti.
Pour illustrer ce concept, considérons le code suivant :
int t[10]; int *u = t; cout << t << " " << &t << endl; cout << u << " " << &u << endl;
La sortie de ce code démontre l'équivalence des adresses de tableau et des adresses de pointeur converties :
0045FB88 0045FB88 0045FB88 0045FB7C
Pour comprendre ce phénomène, nous devons reconnaître deux significations distinctes associées au symbole t:
Dans notre code, la première ligne de la sortie affiche l'adresse de t (le tableau) et l'adresse de &t ( le pointeur vers le tableau). Puisque les tableaux sont des blocs de mémoire contigus, leurs adresses de départ sont identiques.
La deuxième ligne de sortie affiche l'adresse de u (le pointeur converti vers le premier élément) et l'adresse de &u (le pointeur vers le premier élément converti). aiguille). Encore une fois, ces adresses sont les mêmes car u est essentiellement équivalent à &t[0].
Par conséquent, nous concluons que la raison pour laquelle l'adresse d'un tableau est la même que l'adresse du tableau convertie en pointeur est car les deux représentent l’adresse de départ du bloc mémoire contigu occupé par le tableau. Cette équivalence est valable car la conversion tableau en pointeur produit un pointeur vers le premier élément du tableau, qui a le même emplacement mémoire que le début du tableau entier.
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!