トップページ > キーワード検索 > struct
C言語規格
C言語(その他)
プログラム
その他
struct
機能 型指定子の一つで、構造体を表す。
構造体とは、いくつかの変数をひとつの集合体として扱うため型を表す。

また、各々の構造体宣言には[:定数]を用いてビットフィールドを宣言できる。
ビットフィールドとは、ビット単位でサイズを指定することを表す。
ただし、構造体宣言は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





inserted by FC2 system