.
構造体型オブジェクトはメンバを持ちます。メンバを参照するための演算子は「メンバ演算子」と「ポインタ演算子」の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
を参照します。それは要素数 40
の char
の配列です。paper.author
は配列型です。また,paper.year
が構造体ref
型オブジェクト paper
のメンバ year
を参照します。メンバ year
は int
型なので,paper.year
も int
型となります。
/* 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