構造体内のデータが変化する現象について
Posted: 2010年3月08日(月) 00:18
こんにちは、一日考えてわからなかったので質問します。
以下の構造体があるとします。
"hp"の前に何らかの変数を追加すると"hp"の値がini関数を通しているのにも関わらず"0"になってしまいます。
たとえば、以下に●を追加すると、hpの中の数値が"0"になります。ini関数通過後も、です。
例をあげると、以下のパターンです。
*ここでいう想定どおりとは「hpに11000」が代入されるという意味です。
*●は半角英字とお考え下さい。
このように、構造体に箱を追加した後に、そのデータが変化してしまうのはどういった理由が考えられますか?
よろしくお願いします。
環境はvc++2008、winXPです。
以下の構造体があるとします。
typedef struct{ double x,y; int flag,counter,maxhp,hp,pattern; }BODY_enemy_t;これらの数値を以下の関数を用いて初期化しました。
void ini(){ enemy.flag=0; enemy.hp=11000; enemy.maxhp=11000; }この段階では指示通りに変数が代入されます。しかし、
"hp"の前に何らかの変数を追加すると"hp"の値がini関数を通しているのにも関わらず"0"になってしまいます。
たとえば、以下に●を追加すると、hpの中の数値が"0"になります。ini関数通過後も、です。
例をあげると、以下のパターンです。
typedef struct{ double x,y; int flag,●,counter,maxhp,hp,pattern; }BODY_enemy_t;
typedef struct{ double x,y,●; int flag,counter,maxhp,hp,pattern; }BODY_enemy_t;で、hpのあとに●を追加した場合はhpが0にならず、想定どおりに動作します。
*ここでいう想定どおりとは「hpに11000」が代入されるという意味です。
*●は半角英字とお考え下さい。
このように、構造体に箱を追加した後に、そのデータが変化してしまうのはどういった理由が考えられますか?
よろしくお願いします。
環境はvc++2008、winXPです。