構造体の宣言


(A)構造体の型宣言

 構造体の型宣言は次のように宣言します。

struct タグ名
第一メンバの宣言;
第二メンバの宣言;
第三メンバの宣言;
……
};

構造体は、まずキーワード structを使ってコンパイラに、これは構造体ですと宣言します。タグ名は、構造体を識別するための名前(省略可能)を書き、メンバの宣言には、構造体を構成する要素を書きます。実例としてb・1で扱った会員カードと図書分類カードの例で構造体の型宣言をしてみます。

(会員カード)

struct card{
int
id;
char
name[20];
char
add[50];
char
tel[15];
int
age;
};

(図書分類カード)

struct catarog{
char
name[20];
char
title[40];
char
pub[20];
int
date;
};

これで、いろいろな種類のデータを分類して格納できる容器の型が用意できました。しかし、型宣言はあくまで構造体の型を作っただけで、実際にデータを格納する領域は確保されていません。そこで、構造体の型宣言をした後には、領域を確保するために構造体変数の宣言を行います。


(B)構造体変数の宣言

構造体変数とは、構造体をデータ型に持つ変数のことです。構造体変数は型宣言をした後、次のように宣言します。

struct タグ名 変数名


会員カードの例で、先ほど型宣言したcard型の構造体変数a1、a2、a3を宣言し領域を確保するには、

struct card a1、a2、a3 ;

のようにします。また、図書分類カード、catalog型の構造体変数b1、b2を宣言するには、

struct catalog b1、b2 ;

のようにします。


構造体の型宣言では、構造や枠組みという構造体テンプレートを定義しました。テンプレートとは、いわば、クッキーの型抜きのようなものです。型抜きとは、1種類ではなく様々な形のものがあります。そこで名前を付けてどの型抜きか区別しなければなりません。その名前がタグ名でした。そして、型宣言をした後に、「struct card a1;」のように構造体変数を宣言すると、型抜きされたcard型の構造体がメモリ上に確保されます。


また構造体の型宣言と構造体変数の宣言をまとめて

struct card {
int id;
char name[20];
char add[50];
char tel[15];
int age;
}a1,a2,a3; 

のようにすることもできます。


「基礎講座もくじへ」

「Q&Aもくじへ」

「つぎへ」