回答編集履歴
4
しっくり来なかったので再度修正
answer
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
fanaさんの指摘を受け、修正
|
6
6
|
|
7
7
|
str[i] →str配列のi番目の要素の値
|
8
|
-
*(str + i) →str配列の先頭アドレス
|
8
|
+
*(str + i) →str配列の先頭アドレスにiを加算したアドレスの中身の値
|
9
|
-
&str[i] →str配列のi番
|
9
|
+
&str[i] →str配列のi番地のアドレス
|
10
|
-
str + i →str配列の先頭アドレス
|
10
|
+
str + i →str配列の先頭アドレスにiを加算したアドレス
|
11
|
-
&*(str + i) →str配列の先頭アドレス
|
11
|
+
&*(str + i) →str配列の先頭アドレスにiを加算したアドレスの中身の値のアドレス
|
12
12
|
|
13
13
|
サンプルも併せて記載
|
14
14
|
```C
|
3
謎の変数*pを削除
answer
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
int main(void){
|
17
17
|
// Your code here!
|
18
18
|
char str[5]={"abcde"};
|
19
|
-
char* p;
|
20
19
|
int i;
|
21
20
|
for(i = 0; i < 5; i++){
|
22
21
|
printf("%c\n", str[i]);
|
2
サンプルプログラムの出力が間違っていたので修正
answer
CHANGED
@@ -21,36 +21,36 @@
|
|
21
21
|
for(i = 0; i < 5; i++){
|
22
22
|
printf("%c\n", str[i]);
|
23
23
|
printf("%c\n", *(str + i));
|
24
|
-
printf("
|
24
|
+
printf("0p%x\n", &str[i]);
|
25
|
-
printf("
|
25
|
+
printf("0p%x\n", str + i);
|
26
|
-
printf("
|
26
|
+
printf("0p%x\n", &*(str + i));
|
27
27
|
}
|
28
28
|
}
|
29
29
|
|
30
30
|
出力結果
|
31
31
|
a
|
32
32
|
a
|
33
|
-
|
33
|
+
0x7ffc155edf10
|
34
|
-
|
34
|
+
0x7ffc155edf10
|
35
|
-
|
35
|
+
0x7ffc155edf10
|
36
36
|
b
|
37
37
|
b
|
38
|
-
|
38
|
+
0x7ffc155edf11
|
39
|
-
|
39
|
+
0x7ffc155edf11
|
40
|
-
|
40
|
+
0x7ffc155edf11
|
41
41
|
c
|
42
42
|
c
|
43
|
-
|
43
|
+
0x7ffc155edf12
|
44
|
-
|
44
|
+
0x7ffc155edf12
|
45
|
-
|
45
|
+
0x7ffc155edf12
|
46
46
|
d
|
47
47
|
d
|
48
|
-
|
48
|
+
0x7ffc155edf13
|
49
|
-
|
49
|
+
0x7ffc155edf13
|
50
|
-
|
50
|
+
0x7ffc155edf13
|
51
51
|
e
|
52
52
|
e
|
53
|
-
|
53
|
+
0x7ffc155edf14
|
54
|
-
|
54
|
+
0x7ffc155edf14
|
55
|
-
|
55
|
+
0x7ffc155edf14
|
56
56
|
```
|
1
指摘を受け修正
answer
CHANGED
@@ -2,9 +2,55 @@
|
|
2
2
|
YES
|
3
3
|
|
4
4
|
それぞれを日本語で説明するとこんな感じ。
|
5
|
+
fanaさんの指摘を受け、修正
|
5
6
|
|
6
7
|
str[i] →str配列のi番目の要素の値
|
7
|
-
*(str + i) →str配列の先頭アドレスにiを加算したアドレスの値
|
8
|
+
*(str + i) →str配列の先頭アドレス値にiを加算したアドレス値の中身の値
|
8
|
-
&str[i] →str配列のi番目のアドレス
|
9
|
+
&str[i] →str配列のi番目のアドレス値
|
9
|
-
str + i →str配列の先頭アドレスにiを加算したアドレス
|
10
|
+
str + i →str配列の先頭アドレス値にiを加算したアドレス値
|
10
|
-
&*(str + i) →str配列の先頭アドレスにiを加算したアドレスの値のアドレス
|
11
|
+
&*(str + i) →str配列の先頭アドレス値にiを加算したアドレス値の中身の値のアドレス値
|
12
|
+
|
13
|
+
サンプルも併せて記載
|
14
|
+
```C
|
15
|
+
#include <stdio.h>
|
16
|
+
int main(void){
|
17
|
+
// Your code here!
|
18
|
+
char str[5]={"abcde"};
|
19
|
+
char* p;
|
20
|
+
int i;
|
21
|
+
for(i = 0; i < 5; i++){
|
22
|
+
printf("%c\n", str[i]);
|
23
|
+
printf("%c\n", *(str + i));
|
24
|
+
printf("0x%x\n", &str[i]);
|
25
|
+
printf("0x%x\n", str + i);
|
26
|
+
printf("0x%x\n", &*(str + i));
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
出力結果
|
31
|
+
a
|
32
|
+
a
|
33
|
+
0xc93a0c0
|
34
|
+
0xc93a0c0
|
35
|
+
0xc93a0c0
|
36
|
+
b
|
37
|
+
b
|
38
|
+
0xc93a0c1
|
39
|
+
0xc93a0c1
|
40
|
+
0xc93a0c1
|
41
|
+
c
|
42
|
+
c
|
43
|
+
0xc93a0c2
|
44
|
+
0xc93a0c2
|
45
|
+
0xc93a0c2
|
46
|
+
d
|
47
|
+
d
|
48
|
+
0xc93a0c3
|
49
|
+
0xc93a0c3
|
50
|
+
0xc93a0c3
|
51
|
+
e
|
52
|
+
e
|
53
|
+
0xc93a0c4
|
54
|
+
0xc93a0c4
|
55
|
+
0xc93a0c4
|
56
|
+
```
|