回答編集履歴
2
修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
```
|
3
3
|
printf("データ:%d , アドレス:%p\n", *p, p);
|
4
4
|
```
|
5
|
-
ポインターと
|
5
|
+
ポインターとintがいつも同じ大きさとは保障されないので、%pのかわりに%dや%xを使う事は良くないです。
|
6
6
|
私もOSXのため以下を試した結果
|
7
7
|
|
8
8
|
```
|
@@ -15,10 +15,9 @@
|
|
15
15
|
データ:25 , アドレス:1459682028
|
16
16
|
データ:25 , アドレス:5700faec
|
17
17
|
データ:25 , アドレス:0x7fff5700faec
|
18
|
-
|
19
18
|
```
|
20
19
|
となりアドレスの半分しか表示できませんね。。。。
|
21
|
-
|
20
|
+
(ポインターとシステムのintなどのサイズが異なるとアドレスの半分しか表示されない)
|
22
21
|
といういう事[らしい](http://stackoverflow.com/questions/2369541/where-is-p-useful-with-printf)です
|
23
22
|
|
24
23
|
###追記
|
1
追記
answer
CHANGED
@@ -19,4 +19,11 @@
|
|
19
19
|
```
|
20
20
|
となりアドレスの半分しか表示できませんね。。。。
|
21
21
|
|
22
|
-
といういう事[らしい](http://stackoverflow.com/questions/2369541/where-is-p-useful-with-printf)です
|
22
|
+
といういう事[らしい](http://stackoverflow.com/questions/2369541/where-is-p-useful-with-printf)です
|
23
|
+
|
24
|
+
###追記
|
25
|
+
64bitでのアドレス空間のユーザー空間は
|
26
|
+
|
27
|
+
[0x0000000000000000~0x00007fffffffffff](http://wiki.bit-hive.com/linuxkernelmemo/pg/64bit%A4%C7%A4%CE%A5%A2%A5%C9%A5%EC%A5%B9%B6%F5%B4%D6)
|
28
|
+
|
29
|
+
という事で%pの出力はその範囲を正しく表せますが%x(%d)は表せてないですね。。。
|