機能 |
型指定子の一つで、構造体を表す。 構造体とは、いくつかの変数をひとつの集合体として扱うため型を表す。 また、各々の構造体宣言には[:定数]を用いてビットフィールドを宣言できる。 ビットフィールドとは、ビット単位でサイズを指定することを表す。 ただし、構造体宣言はint型のみ使用可能。 構造体の各変数にアクセスするには「.」を用いて行う。また、ポインタ経由でアクセスする場合は「->」を用いて行う。 |
---|---|
定義 |
struct [識別名]option { <構造体宣言リスト> } <構造体宣言リスト> [<構造体宣言>]repeat <構造体宣言> 型 変数名 [: 定数]option ; |
実装例 |
#include <stdio.h> int main(void) { struct XYZ /* 構造体XYZの定義 */ { int x, y; /* int型の変数x,yの定義 */ char z; /* char型の変数zの定義 */ }; struct /* 変数を宣言した場合は識別名を省略可能 */ { int a; } a; /* 構造体変数の宣言 */ struct BITS /* ビットフィールドを用いた定義 */ { unsigned int bit1 : 1; /* 1ビット幅 値範囲=0〜1 */ unsigned int bit7 : 7; /* 7ビット幅 値範囲=0〜127 */ unsigned int byte1 : 8; /* 1バイト幅 値範囲=0〜255 */ unsigned int byte3 : 24; /* 3バイト幅 値範囲=0〜16777215 */ }; struct XYZ s = {1, 2, 'c'}; /* 構造体XYZを用いた変数の宣言 */ /* 初期化する場合は{...}で定義順に宣言する */ struct XYZ *p; /* 構造体XYZのポインタ変数の宣言 */ s.x = 10; /* 構造体XYZの変数xに代入 */ s.z = 'c'; /* 構造体XYZの変数zに代入 */ p = &s; /* 変数aへのポインタを設定 */ p->y = 20; /* ポインタからの構造体XYZのアクセス */ printf("%d\n", s.x); printf("%d\n", s.y); printf("%c\n", s.z); return 0; } |
実行結果 |
10 20 c |
struct