- ベストアンサー
ポインタの基礎について
以下の問題を考えたのですが、結果がおかしいようで、どこが間違っていますか?教えて下さい。 以下のプログラムを実行した場合に、各変数の値は(1)~(4)の時点で順次どのような値になっているか。 ただし、32bit処理系で実行しているものとし、n[0]、n[1]、・・・は夫々0x1000番地、0x1004番地、・・・に存在するものとする。 int n[7] = {0,1,2,3,4,5,6}; int *p; p = &n[0]; *p = 5; /* (1)この時点で、pの値とn[0]~n[6]の各値は何か?*/ p++; *p = 6; /* (2)この時点で、pの値とn[0]~n[6]の各値は何か?*/ p = &n[5]; *p = 7; /* (3)この時点で、pの値とn[0]~n[6]の各値は何か?*/ p -= 2; *p = 8; *(p+3) = 9 /* (4)この時点で、pの値とn[0]~n[6]の各値は何か?*/ これがわたしの考えた回答です↓ (1)0022FF50 5, 1, 2, 3, 4, 5, 6 (2)0022FF54 5, 6, 2, 3, 4, 5, 6 (3)0022FF64 5. 6, 2, 3, 4, 7, 6 (4)0022FF5C 5, 6, 2, 3, 4, 7, 9
- みんなの回答 (4)
- 専門家の回答
お礼
説明も詳しく書いてくれてありがとうございます。 理解することができました。 再度自分で作ったプログラムは、正確に表示してくれたので、回答と同じ結果になってうれしいです。