Struktur- und Unionmember
Ein Memberauswahlausdruck bezieht sich auf Member von Strukturen und Unions. Ein solcher Ausdruck hat den Wert und Typ des ausgewählten Members.
postfix-expression
.
identifier
postfix-expression
->
identifier
Diese Liste beschreibt die zwei Arten von Memberauswahlausdrücken:
Im ersten Formular steht
postfix-expression
für einen Wert des Typsstruct
oderunion
. Mitidentifier
wird ein Member der angegebenen Struktur oder Union benannt. Der Wert des Vorgangs entsprichtidentifier
und ist ein L-Wert, sofernpostfix-expression
ein L-Wert ist. Weitere Informationen finden Sie unter L-Wert- und R-Wert-Ausdrücke.Im zweiten Formular steht
postfix-expression
für einen Zeiger auf eine Struktur oder Union; mitidentifier
wird ein Member der angegebenen Struktur oder Union benannt. Der Wert ist ein L-Wert und entsprichtidentifier
.
Die beiden Formen der Memberauswahlausdrücke verfügen über ähnliche Auswirkungen.
Tatsächlich ist ein Ausdruck, der den Memberauswahloperator (->
) enthält, eine Kurznotationsversion eines Ausdrucks, der den Punkt (.
) verwendet, wenn der Ausdruck vor dem Punkt aus dem Dereferenzierungsoperator (*
) besteht, der auf einen Zeigerwert angewendet wird. Daher eignet sich
expression->identifier
für die folgende Syntax:
(*expression).identifier
wenn expression
ein Zeigerwert ist
Beispiele
Die folgenden Beispiele beziehen sich auf diese Strukturdeklaration. Weitere Informationen zum Dereferenzierungsoperator (*
), der in diesen Beispielen verwendet wird, finden Sie unter Dereferenzierungs- und Address-of-Operatoren.
struct pair
{
int a;
int b;
struct pair *sp;
} item, list[10];
Ein Memberauswahlausdruck für die item
-Struktur sieht wie folgt aus:
item.sp = &item;
Im Beispiel wird die Adresse der item
-Struktur dem sp
-Member der Struktur zugewiesen. Dies bedeutet, dass item
einen Zeiger auf sich selbst enthält.
(item.sp)->a = 24;
In diesem Beispiel wird der Zeigerausdruck item.sp
mit dem Memberauswahloperator (->
) verwendet, um dem Member a
einen Wert zuzuweisen.
list[8].b = 12;
Diese Anweisung zeigt, wie ein einzelner Strukturmember aus einem Array von Strukturen ausgewählt wird.