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:

  1. Im ersten Formular steht postfix-expression für einen Wert des Typs struct oder union. 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 finden Sie unter L-Wert- und R-Wert-Ausdrücke.

  2. Im zweiten Formular steht postfix-expression für einen Zeiger auf eine Struktur oder Union; mit identifier wird ein Member der angegebenen Struktur oder Union benannt. Der Wert ist ein L-Wert und entspricht identifier.

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.

Siehe auch

Memberzugriffsoperatoren: . und ->