回答編集履歴

2

書式について築城

2016/05/11 04:41

投稿

kutsulog
kutsulog

スコア985

test CHANGED
@@ -3,6 +3,18 @@
3
3
  (unsignedにしないとオーバーフローでマイナスになりますが、
4
4
 
5
5
  unsignedならすべてのアドレスを表現できます)
6
+
7
+ %pや%dはその値をどのように表現するかを指定しているだけです
8
+
9
+ %d:符号付整数値
10
+
11
+ %u:符号無整数値
12
+
13
+ %c:文字コードに対応する文字
14
+
15
+ %s:\0までの連続する文字コードを文字列として表示
16
+
17
+ など
6
18
 
7
19
 
8
20
 

1

たとえの追記

2016/05/11 04:41

投稿

kutsulog
kutsulog

スコア985

test CHANGED
@@ -11,3 +11,43 @@
11
11
  アドレスpと文字列開始位置のアドレスstrの差分は
12
12
 
13
13
  そのまま間に何文字入っているかを示します。
14
+
15
+
16
+
17
+ たとえば
18
+
19
+ > char str[] = "abcdef\0ghij";
20
+
21
+
22
+
23
+ の先頭アドレスが1000番地だった場合、
24
+
25
+ 1000番地にa
26
+
27
+ 1001番地にb
28
+
29
+ 1002番地にc
30
+
31
+ 1003番地にd
32
+
33
+ 1004番地にe
34
+
35
+ 1005番地にf
36
+
37
+ 1006番地に\0
38
+
39
+ 1007番地にg
40
+
41
+ 1008番地にh
42
+
43
+ 1009番地にi
44
+
45
+ 1010番地にj
46
+
47
+ が入っています
48
+
49
+ memchrによってpにiの入っているアドレス1009を取得してきますので
50
+
51
+ p-str = 1009 - 1000 = 9となり
52
+
53
+ iは文字列の9番目と出てくるわけです