法大奥山研究室

 previous  contents

11.2. メンバ演算子 .


 構造体型オブジェクトはメンバを持ちます。メンバを参照するための演算子は「メンバ演算子」と「ポインタ演算子」の2つがあります。ここでは,メンバ演算子を見ます。

■メンバ演算子(Member Operator)

構造体型オブジェクト.メンバ名
/* Example 11.5 */

#include <stdio.h>

struct ref {
       char author[40];        /* 著者 */
       char title[80];         /* タイトル */
       int  year;              /* 発行年 */
       char resource[120];     /* 出典元 */
};

int main(void)
{
       struct ref paper = {
              "J. von Neumann",
              "Zur Theorie der Gesellschaftsspiele",
              1928,
              "Mathematische Annalen"
       };

       printf("[AU] %s\n", paper.author);
       printf("[TI] %s\n", paper.title);
       printf("[YR] %d\n", paper.year);
       printf("[SO] %s\n", paper.resource);

       return 0;
}

実行結果です。

[AU] J. von Neumann
[TI] Zur Theorie der Gesellschaftsspiele
[YR] 1928
[SO] Mathematische Annalen

paper.author が構造体ref型オブジェクト paper のメンバ author を参照します。それは要素数 40charの配列です。paper.author は配列型です。また,paper.year が構造体ref型オブジェクト paper のメンバ year を参照します。メンバ yearint型なので,paper.yearint型となります。

/* Example 11.6 */

#include <stdio.h>

struct s { char c; double r[3]; } x = {'A', {1.5, -3.0, 2.0}};

int main(void)
{
       printf("c\tr[0]\t\tr[1]\t\t4[2]\n");
       printf("%c\t%f\t%f\t%f\n", x.c, x.r[0], x.r[1], x.r[2]);
       return 0;
}

実行結果です。

c       r[0]            r[1]            4[2]
A       1.500000        -3.000000       2.000000

 previous  contents