構造体
ここでは、複数の変数をまとめて扱う、構造体について扱います。
構造体
関連する意味を持った変数を、まとめて一つにして扱いたい場合はよくあります。これを実現するのが構造体です。
例えばBox 形状 ( 四角形 )の幅と高さは、別々に宣言するよりも、2 つをまとめて「 Box 型 」などと扱えれば便利です。 構造体では、このようなBox 型を作る事ができます。
VCSSL における構造体は、以下のような文法で定義します:
- 構造体定義の文法 -
メンバ変数a の宣言 ;
メンバ変数b の宣言 ;
…
}
メンバ変数とは、構造体にまとめる(構成要素となる)変数の事です。
幅と高さを持つ構造体の定義例
実際に、上でも述べた、幅(width)と高さ(height)をメンバ変数に持つ構造体 「 Box 型 」は、以下のように定義します:
これで、幅を表すメンバ変数「 width 」 と、高さを表すメンバ変数「 height 」をまとめた構造体 「 Box 」が定義できました。
構造体の使用方法
構造体を使うには、普通の変数と同様に、変数名を付けて宣言を行います。 変数型の部分が構造体の名前(上の例ではBox)になるだけです。
そして、構造体のメンバ変数を使うには、構造体の変数名の後にドット記号 「 . 」 を付け、 その後にメンバ変数の名前を記述します。
つまり「 構造体変数名.メンバ変数名 」で 1 つの変数のように扱います。
具体的に、先のBox 型を使ってみましょう。以下のように記述し、実行してみてください:
上のプログラムを実行すると、VCSSL コンソールに「 幅=100 高さ=200 」と表示されます。
このように、構造体を用いて、幅と高さという2 つの値を、1 つの変数にまとめて扱う事ができました。
構造体の代入演算は、すべてのメンバ変数のコピー
構造体変数の代入は、同じ構造体(型)のもの同士でのみ可能です。 その際、代入演算の内容は、全てのメンバ変数値を代入するのと同じになります。つまりは中身のコピーに相当します。
配列や関数でも使用可能
構造体の配列を作る事も可能です。また、関数の引数や戻り値に構造体を使用する事もできます。