Nun verstehe ich nicht, warum a und & a den gleichen Wert zurückgeben, was die Begründung ist
a
ist der Name des Arrays, das als Zeiger auf das erste Element des Arrays deklariert wird.
&a
ist nichts anderes als die Adresse des Arrays selbst, obwohl a
und &a
den gleichen Wert ausgeben, wenn ihre Typen unterschiedlich sind.
Was ist auch der Typ von & amp; a?
Zeiger auf ein Array mit drei int
s, d. h. int (*)[3]
könnte ich auch & amp; (& amp; a)?
?
Nein, die Adresse des Operators erfordert, dass sein Operand ein L-Wert ist. Ein Array-Name ist ein nicht modifizierbarer L-Wert, also ist &a
legal, aber &(&a)
nicht.
Druckart von &a
( C ++ nur )
P.S:
Verwenden Sie %p
Formatspezifizierer zum Drucken der Adresse (mit falschem Formatbezeichner in printf
ruft Undefined Behavior auf)