回答編集履歴

1

追記

2021/02/14 16:53

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -63,3 +63,71 @@
63
63
 
64
64
 
65
65
  理解できますか?
66
+
67
+
68
+
69
+ **追記**
70
+
71
+ > &str[i]はポインタstr[i]の指すメモリに入る数値、str[i]はメモリに入る数値だと理解できています。
72
+
73
+
74
+
75
+ char str[4] = "abc"; と宣言されていたとすると、
76
+
77
+ str[i] は、配列 str の i番目の要素で、型は char。
78
+
79
+
80
+
81
+ ここで、str[0] = 'e'; と書くことができます。
82
+
83
+ carnage0216さんの理解しているように str[i] が数値なら、
84
+
85
+ 'a' = 'e' となりますよね。
86
+
87
+ しかし、値に値は代入できません。
88
+
89
+ str[i] は値ではないのです。
90
+
91
+ str[i] は変数と同じものなのです。
92
+
93
+ 変数には値を代入できます。
94
+
95
+
96
+
97
+ 変数は、次の 2 つの性質があります。
98
+
99
+ 1. 値を持つ。
100
+
101
+ 2. 値を変更できる。
102
+
103
+ str[i] は変数(と同じもの)なのです。
104
+
105
+ carnage0216さんは、1 の性質しか理解していなくて、
106
+
107
+ str[i] を数値だと言っているのです。
108
+
109
+ それは間違いです。
110
+
111
+
112
+
113
+
114
+
115
+ > &str[i]はポインタstr[i]の指すメモリに入る数値、
116
+
117
+
118
+
119
+ 「ポインタstr[i]」が間違い。
120
+
121
+ str[i] はポインタではありません。char型の変数です。
122
+
123
+ 変数ですから、メモリ中にあり、アドレスが決まっています。
124
+
125
+ &str[i] は、変数str[i] のアドレスです。
126
+
127
+ アドレスだから、値です。
128
+
129
+ 数値と言ってもいいかもしれませんが、
130
+
131
+ int や double とは違いますから、単に「値」と言いましょう。
132
+
133
+ とにかく、&str[i] は、「変数str[i] のアドレス」だと理解しましょう。