Die Adresse des ersten Elements des Arrays ist die gleiche wie die Adresse des Arrays selbst.
Es sei denn, es ist der Operand der Funktion sizeof
oder Adresse von &
Operatoren oder ein Stringliteral ist, das zur Initialisierung eines anderen Arrays in einer Deklaration verwendet wird, wird ein Ausdruck vom Typ "N-Element-Array von T" implizit in den Typ "Zeiger auf T" umgewandelt ("zerfallen") und der Wert ist die Adresse des ersten Elements im Array.
Wenn der Ausdruck a
vom Typ "N-Element-Array von T" ist, dann ist der Ausdruck &a
vom Typ "Zeiger auf N-Element-Array von T" ist, oder T (*)[N]
.
Angesichts der Erklärung
T a[N];
dann sind die folgenden Punkte alle wahr:
Expression Type Decays to
---------- ---- ---------
a T \[N\] T \*
&a T (\*)\[N\] n/a
\*a T n/a
Die Ausdrücke a
y &a
beide ergeben den gleichen Wert Wert (die Position des ersten Elements im Array), haben aber unterschiedliche Typen (Zeiger auf T bzw. Zeiger auf Array von T).