メンバへのアクセス

構造体型の変数から、メンバにアクセスするにはメンバ演算子 . を用います。

後置式 . 識別子

. 演算子の左オペランドには構造体型の値を指定し、右オペランドには構造体のメンバ名を指定します。これによって、構造体型の変数から、メンバに対して値を代入したり、メンバの値を取得したりできます。memberという名前のメンバを持つ構造体型の変数 objが用意されている場合、構造体のメンバmemberには、次のようにアクセスします。

obj . member

左オペランドobjは、構造体型の変数でなければなりません。メンバを持たない値を、メンバ演算子 . に指定することはできません。右オペランドには、左オペランドに指定した構造体が持つメンバの名前を指定します。

構造体のメンバは、それ自体が独立した変数として機能します。次のように、メンバ演算子で参照したメンバに対して値 x を代入できます。

obj . member = x;

上記のコードは、構造体型の変数objのmemberメンバに値 x を代入しています。逆に、メンバの値を取得して変数 x に代入する場合は、次のようになります。

x = obj. member;

このように、構造体型の変数は、構造体で宣言されたメンバを変数として持ちます。メンバ演算子 . を用いて、構造体のメンバにアクセスすることで、型の異なる複数の変数を1つの構造体に関連付けて管理できます。

Sample01

#include <stdio.h>

int main(void)
{
    struct { int x, y; } pt ;

    pt.x = 10;
    pt.y = 20;
    printf("pt.x=%d, pt.y=%d\n", pt.x, pt.y);

    return 0;
}

実行結果

Sample01の実行結果

Sample01は、int型のメンバ xと y を持つ簡単な構造体を宣言しています。変数 pt は構造体なので、メンバ演算子 . を使って x メンバと y メンバにアクセスできます。それぞれのメンバに適当な整数を代入しprintf()関数でメンバの値を表示しています。実行結果を見れば、構造体のメンバに正しく値が保存することができ、保存した値を読み込めていることが確認できます。このように、構造体は関連する複数の変数をメンバとしてまとめることができます。