構造体内のデータが変化する現象について
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です。