構造体

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

構造体(こうぞうたい)はプログラミング言語におけるデータ型の一つで、1つもしくは複数の値をまとめて格納できる型。それぞれのメンバは型が異なっていてもよい点が配列と異なる。またVisual Basicのユーザー定義型や、PascalAdarecord型も構造体に相当する。

C/C++などでサポートされている(struct)。オブジェクト指向言語では、より純粋なオブジェクト指向を目指して削除されることも多い。構造体がない言語では、クラスで代用される。逆にオブジェクト指向言語でないCなどでオブジェクト指向プログラミングを模倣するために構造体を使うこともある。標準ライブラリのFILE型がその典型的な例である。構文「struct 構造体名{ ... };」又、「typedef構文」を用いることでも定義できる。

C言語の例[編集]

 #include <stdio.h>
 
 struct PersonalData  /* PersonalDataを構造体として定義 */
 {
  char Name[100];      /* メンバ変数(つまり構造体の要素)を名前と年齢とする */
  int Age;
 };
 
 int main(void)    /* 上で定義された構造体を使ってみる */
 {
   struct PersonalData pd;  /* 構造体の宣言 */
   struct PersonalData *ppd; /* 構造体のポインタ */
 
   scanf("%s",pd.Name);    /* 値を入力 */
   scanf("%d",&(pd.Age));   /* 値を入力 */
 
   ppd = &pd;
   ppd->Age++;               /* ポインタの参照先のメンバにアクセスするには->を使う。*/
 
   printf("%s-%d\n",pd.Name, pd.Age);
   return 0;
 }

typedefを用いた例

 #include <stdio.h>
 
 typedef struct PersonalData  /* PersonalDataを構造体として定義 */
 {
  char Name[100];      /* メンバ変数(つまり構造体の要素)を名前と年齢とする */
  int Age;
 };
 
 int main(void)    /* 上で定義された構造体を使ってみる */
 {//「typedef」を用いた場合は、構造体宣言時の「struct」を省略できる。
   PersonalData pd;  /* 構造体の宣言 */
   PersonalData *ppd; /* 構造体のポインタ */
 
   scanf("%s",pd.Name);    /* 値を入力 */
   scanf("%d",&(pd.Age));   /* 値を入力 */
 
   ppd = &pd;
   ppd->Age++;               /* ポインタの参照先のメンバにアクセスするには->を使う。*/
 
   printf("%s-%d\n",pd.Name, pd.Age);
   return 0;
 }


関連項目[編集]