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:
Bei der ersten Form stellt postfix-expression einen Wert des Typs struct oder union dar, mit identifier wird ein Member der angegebenen Struktur oder Union benannt. Der Wert des Vorgangs entspricht identifier und ist ein L-Wert, sofern postfix-expression ein L-Wert ist. Weitere Informationen erhalten Sie unter L-Wert-und R-Wert-Ausdrücke.
Bei der zweiten Form stellt postfix-expression einen Zeiger auf eine Struktur oder Union dar, mit identifier wird ein Member der angegebenen Struktur oder Union benannt. Der Wert entspricht identifier und ist ein L-Wert.
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 mithilfe des Punkts (.), 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 obigen Beispiel wird die Adresse der sp-Struktur dem item-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.