最終更新:2018-10-25 (木) 16:44:05 (25d)  

C言語/構造体 はてなブックマークを見る
Top / C言語 / 構造体

struct タグ名{
データ型 メンバー名;
};

C言語/関数

  • 構造体型の引数は、受け取る側の関数に全ての値がコピーされます

structtypedef

使い方

  • 構造体定義を
    struct PointType{
    double x;
    double y;
    };
    として定義すると、この構造体を使用するとき
    struct PointType point;
    と宣言する(C++ではstruct無しでよいがC言語ではキーワードstructが必要)。 上記の構造体定義を行った上で
    typedef struct PointType Point_t;
    と別名定義を行うと、この型を使用するとき
    Point_t point;
    という風に改めてstructと宣言する必要がない。 上記の構造体定義と別名定義を同時に行うのが
    typedef struct {...} Point_t;
    という記述方法。この場合、構造体タグ(上記の例ではPointType?)を省略可能。
  • C言語ではtypedefしておかないと構造体を使用するとき毎回structと記述する必要があるため、typedefで型定義しておくことが多い。
  • C++ではstructで定義したものはstructと付けなくても宣言可能

初期化

  • struct Range range = {1, 2};
    struct Range r = {.location = 1, .length = 2};

標準Cライブラリ

stdlib.h

  • div_t? - int 型の商と剰余を格納する構造体
  • ldiv_t? - long 型の商と剰余を格納する構造体

locale.h

  • lconv? - 数値を記述する場合の書式に関する情報を格納する構造体

stdio.h

  • FILE - ストリームを制御するためのオブジェクト型(構造体とは限らない)

time.h

  • tm - 暦時刻の各要素(時分秒等)を格納する構造体

関連