構造体と共用体のメンバー

"メンバー選択式" は構造体と共用体のメンバーを参照します。 このような式には、選択したメンバーの値と型が割り当てられます。

postfix-expression.identifier
postfix-expression->identifier

ここでは、メンバー選択式の 2 つの形式について説明します。

  1. 最初の形式で、postfix-expression は型 struct または union の値を表し、identifier はその構造体または共用体のメンバーを指定します。 postfix-expression が左辺値の場合、この演算の値は identifier の値で、左辺値です。 詳細については、「左辺値と右辺値の式」を参照してください。

  2. 2 番目の形式では、postfix-expression は構造体または共用体へのポインターを表し、identifier はその構造体または共用体のメンバーを指定します。 値は identifier の値で、左辺値です。

どちらの形式のメンバー選択式でも同じ結果が得られます。

実際、ピリオド (.) を使った式の左側部分に間接演算子 (*) が適用されている場合、その簡潔バージョンとしてメンバー選択演算子 (->) を使った式を使用できます。 次に例を示します。

expression->identifier

上記の式は、次の式と同じです。

(*expression).identifier

expression はポインター値になります。

使用例

次に、この構造体宣言の例を示します。 これらの例で使用されている間接演算子 (*) については、「間接演算子とアドレス演算子」を参照してください。

struct pair
{
    int a;
    int b;
    struct pair *sp;
} item, list[10];

item 構造体のメンバー選択式は次のようになります。

item.sp = &item;

上の例では、item 構造体のアドレスが、この構造体の sp メンバーに割り当てられます。 つまり、item にはそれ自体へのポインターが格納されます。

(item.sp)->a = 24;

この例では、ポインター式 item.sp とメンバー選択演算子 (->) を使用して、メンバー a に値を割り当てています。

list[8].b = 12;

このステートメントは、構造体の配列から個々の構造体メンバーを選択する方法を示しています。

関連項目

メンバー アクセス演算子: . と ->