回答編集履歴

2

修正

2017/11/05 18:05

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -54,9 +54,11 @@
54
54
 
55
55
 
56
56
 
57
+ printf("%s, adress: %p\n", str, str);
58
+
57
59
  for(char *pt = str; *pt != '\0'; pt++) {
58
60
 
59
- printf("%c, adress: %p\n", *pt, pt);
61
+ printf("%5c, adress: %p\n", *pt, pt);
60
62
 
61
63
  }
62
64
 
@@ -76,15 +78,17 @@
76
78
 
77
79
  ```
78
80
 
79
- H, adress: 00405064
81
+ Hello, adress: 00405064
80
82
 
81
- e, adress: 00405065
83
+ H, adress: 00405064
82
84
 
83
- l, adress: 00405066
85
+ e, adress: 00405065
84
86
 
85
- l, adress: 00405067
87
+ l, adress: 00405066
86
88
 
89
+ l, adress: 00405067
90
+
87
- o, adress: 00405068
91
+ o, adress: 00405068
88
92
 
89
93
  ```
90
94
 

1

追記

2017/11/05 18:04

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -33,3 +33,63 @@
33
33
 
34
34
 
35
35
  問題ないです。
36
+
37
+
38
+
39
+ 追記
40
+
41
+ ---
42
+
43
+ ```C
44
+
45
+ #include<stdio.h>
46
+
47
+
48
+
49
+ int main()
50
+
51
+ {
52
+
53
+ char *str = "Hello";
54
+
55
+
56
+
57
+ for(char *pt = str; *pt != '\0'; pt++) {
58
+
59
+ printf("%c, adress: %p\n", *pt, pt);
60
+
61
+ }
62
+
63
+ printf("\n");
64
+
65
+
66
+
67
+ return 0;
68
+
69
+ }
70
+
71
+ ```
72
+
73
+
74
+
75
+ **実行結果**
76
+
77
+ ```
78
+
79
+ H, adress: 00405064
80
+
81
+ e, adress: 00405065
82
+
83
+ l, adress: 00405066
84
+
85
+ l, adress: 00405067
86
+
87
+ o, adress: 00405068
88
+
89
+ ```
90
+
91
+
92
+
93
+ **『ヌル終端しているから、先頭の文字のアドレスを文字列のアドレスとみなせる』**んです。
94
+
95
+ 一文字一文字アドレスは別個です。