SACT2の構造体を使ってみる

Last-modified: 2007-08-22 (水) 20:42:06
 

 さて、SACT2には関数の他に、それを補助する構造体(と、クラス)というものがあります。
 これはいくつかの変数と関数を、一つの箱の中に入れたようなものです。
 この箱の設計図的なものを構造体型といいます。
 構造体型は、関数と同じように、関数の中で生成することはできません。
 SACT2にはあらかじめ、いくつかの関数体型が定義されています。

 

 構造体型に入れられた変数や関数は、構造体変数を宣言することで使えるようになります。

 構造体変数は関数外(グローバル)で宣言されたものと、関数内(ローカル)で宣言するものの
2種類に分けられます。
 グローバルで宣言されたものは、どの関数内でも使えるものです。
 ローカルで宣言されたものはその関数から出ることで消滅します。
 このあたりは他の変数と変わりません。

 

 構造体の中の変数をメンバー変数、構造体の中の関数をメソッドと呼びます。

 

メンバー変数編

 SACT2にもともとある構造体型の、構造体変数をgame_mainで呼び出してみましょう。


void game_main(void)
{
 rect_t てすと;
てすと.x = 3;
てすと.y = 3;
  rect_t テスト;
テスト.x = 4;
テスト.y = 4;
N(てすと.x + てすと.y + テスト.x +  テスト.y);A; //3+3+4+4 = 14が表示されます
}

 まず3行目の「rect_t てすと;」ですが、これは「rect_t」という構造体型の
 構造体変数を「てすと」という名前で宣言しています。
 (rect_tはSACT2で定義されている構造体型の一つです)

 

構造体変数の宣言の方法(まぁ構造体型をint型などと同じと見れば、変数と同じです)
 構造体型の名前(半角以上のスペース)構造体変数の名前;

 

 これは関数内に記述しているので、ローカルな構造体変数です。

 rect_tには int x、int yというint型変数が入っています。(初期値はありません)
 他の変数も入っていますが、今はとりあえず使用せず放置することにします。

 

 4行目の「てすと.x = 3;」は、
  「rect_t」という構造体型で宣言された、
  「てすと」という構造体変数の中の
  「x」int型メンバー変数に、3を代入しています。

 

 構造体変数の中に入った変数を扱う場合、構造体変数名.という書き方をします。
 5行目も同じようにyに3を代入しています。

 

 6行目は、新しい構造体変数を宣言しています。
 同じ構造体型ですが、名前を変えています。これは「テスト」。
 これにより、game_mainには2つの構造体変数が宣言されました。「てすと」と「テスト」。
 7,8行目では、新しく宣言された構造体変数のx,yにそれぞれ4を代入しています。
 最後の9行目で、全部の数字を足し、表示しています。

 

 まとめ。
 構造体変数宣言と同時に、構造体型の中で定義された
 いくつかの変数を扱うことができるようになります。

 

 変数の扱い方は、ようは 構造体変数名.がついたと考えてください。