提示例だとint
のサイズが4byte
だと思われますが、アドレスとその指す値が合いませんね…
実際に計算してみると255*4=1024=0x3FC
→アドレスは0オリジン、値は1オリジンなので0x3FC-1=0x3F8
となり、以下の実際の結果と一致します。
C++
1#include <stdio.h>
2#define SIZE 255
3int main(void)
4{
5 int a[SIZE] = {0};
6 for(int i = 0; i < SIZE; i++){
7 a[i] = i+1;
8 }
9 int *p = a;
10 for( int i = 0; i < SIZE; i++){
11 int x = 0x1000 + (int)p-(int)a;
12 printf("0x%04X,%02X,(0x%08X)\n", x, *p, p);
13 p++;
14 }
15 /*
16 0x1000,01,(0x84FC9F30)
17 0x1004,02,(0x84FC9F34)
18 0x1008,03,(0x84FC9F38)
19 0x100C,04,(0x84FC9F3C)
20 : (略)
21 0x13EC,FC,(0x84FCA31C)
22 0x13F0,FD,(0x84FCA320)
23 0x13F4,FE,(0x84FCA324)
24 0x13F8,FF,(0x84FCA328)
25 */
26 return 0;
27}
なお、ファイルにテキストとして出力したい場合はprintf
→fprintf
に変えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。