- 締切済み
質問です
構造体のプログラムで、 #include<stdio.h> struct example{ char str[4]; /* 文字列 */ int num; /* 番号 */ }; int main() { struct example data[5]; /* 全て0で初期化されているとする */ struct example *ps; ps = &data[2]; ps->str[3]='A'; /* (1)この処理でどこが書き変わるか? */ ps += 2; (*ps).num = 15; /* (2)この処理でどこが書き変わるか? */ ps -= 4; ps->str[0] = 'z'; /* (3)この処理でどこが書き変わるか? */ } と、いうものがあるのですが、質問が、「上のようなプログラムのような処理を行った場合に、ポインタ変数psの中身はその時点でどのようになるか。 構造体変数data[]のアドレスは0x1000、0x1000、0x1010、0x1018、0x1020であるとする。」 という問題で、それぞれ、printf文を使ってpsの変化を実際に見てみればよいと思ったのですが、問題文の意図がよく分からないことと、仮にprintf文を入れた場合、どこにどのような中身で入れたら良いのか教えて欲しいと思っています。 お願いします。
お礼
ありがとうございます。 間違ってたらすみません。 答えとして、 「(1)アドレス0x1008の値が2293584に書き換わる (2)アドレス0x1018の値が2293600に書き換わる (3)アドレス0x1020の値が2293568に書き換わる」 は合っていますか??