.構造体型オブジェクトはメンバを持ちます。メンバを参照するための演算子は「メンバ演算子」と「ポインタ演算子」の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