Es ist ein -Zeiger für zusammengesetzte Literale .
C11-§6.5.2.5 Zusammengesetzte Literale (p9):
BEISPIEL 2 Im Gegensatz dazu in
%Vor%p wird die Adresse des ersten Elements eines Arrays von zwei zugewiesen ints, wobei der erste den Wert aufweist, auf den p und Sekunde, Null. Die Ausdrücke in diesem zusammengesetzten Literal müssen nicht sein Konstante. Das unbenannte Objekt hat eine automatische Speicherdauer.
Mit int ffx1(int * p)
, p
ist ein Zeiger auf ein int
.
(int[2]){*p}
ist ein zusammengesetztes Literal , das ein int
-Array von 2 definiert. @ BLUEPIXY " Dieses unbenannte Array nennen wir X[2]
. Sein erstes Element hat den Wert *p
, und das nächste Element, das ein int
ist, wird auf Null initialisiert (§6.7.9 21 & amp; 10), da es nicht explizit aufgeführt ist.
p = ....
hat den Zeiger p
einem neuen Wert zugewiesen. In diesem Fall wird das obige Array X[]
in die Adresse seiner ersten Registrierung oder &X[0]
konvertiert.
return p[1]
löscht p
und gibt den Wert in X[1]
oder 0
zurück.
Tags und Links c pointers compound-literals