Compte tenu d'une déclaration de tableau T a[N]
, l'expression &a
a le type « pointeur sur un tableau de N-élément de T
(T (*)[N]
) et sa valeur est l'adresse de base de la matrice A cet le respect, l'opérateur &
unaire se comporte de la même pour les tableaux comme pour tout autre type de données.
ce qui est hinky comment C traite l'expression du tableau a
. Sauf quand il est l'opérande du sizeof
ou un opérateur littéral &
, ou est une chaîne littérale utilisée pour initialiser un autre tableau dans une déclaration, une expression de type "N-élément tableau de T
" (T [N]
) sera remplacée par ("decay to") une expression de pointeur de tapez "pointeur vers T
" (T *
) et sa valeur sera l'adresse du premier élément du tableau. IOW, a == &a[0]
.
Puisque l'adresse du premier élément du tableau est la même que l'adresse de base de l'ensemble du réseau, les expressions a
et &a
donnent le même valeur, mais les types sont différents (T *
par opposition à T (*)[N]
) .
duplication possible de [C: Comment l'adresse d'un tableau est-elle égale à sa valeur?] (Http://stackoverflow.com/questions/2528318/c-how-come-an-arrays-address-is-equal- à sa valeur) – jpalecek
Voir aussi: http://stackoverflow.com/q/7351331/51831 – jpalecek
Vous pourriez aimer [une réponse à la mienne à une question similaire] (http://stackoverflow.com/questions/5181237/ confusion-in-data-types-in-a-2d-array/5181495 # 5181495) demandé il y a quelque temps. – pmg