回答編集履歴
3
修正
test
CHANGED
@@ -20,9 +20,9 @@
|
|
20
20
|
> 「`p[N]=*(p+N)`であり`p[N]=*(p+N)=* (N+p)=N[p]`となり実質的に同じアドレス値になる」
|
21
21
|
|
22
22
|
しかしこの説明だと簡潔にすぎるので補足を行いますと、
|
23
|
-
|
23
|
+
|
24
|
-
* 変数`p`はポインタ型または配列型で、`N`は整数型である必要があります。
|
24
|
+
* この説明において変数`p`はポインタ型または配列型で、`N`は整数型である必要があります。
|
25
|
-
* 添字演算子`[]`は演算対象となるもの(オペランド)を2つ取り、「ポインタ型または配列型」
|
25
|
+
* 添字演算子`[]`は演算対象となるもの(オペランド)を2つ取り、1つは「ポインタ型または配列型」、もう1つは整数型である必要があります。
|
26
26
|
* 添字演算子`[]`は `p[N] = *(p+N)`となるように *定義されています。*
|
27
27
|
* 加算演算子`+`は左右オペランドを交換しても同じ結果になります。すなわち、`a+b = b+a`です。
|
28
28
|
|
2
追記
test
CHANGED
@@ -19,7 +19,17 @@
|
|
19
19
|
説明のとおりです。
|
20
20
|
> 「`p[N]=*(p+N)`であり`p[N]=*(p+N)=* (N+p)=N[p]`となり実質的に同じアドレス値になる」
|
21
21
|
|
22
|
+
しかしこの説明だと簡潔にすぎるので補足を行いますと、
|
23
|
+
まず前提として
|
24
|
+
* 変数`p`はポインタ型または配列型で、`N`は整数型である必要があります。
|
25
|
+
* 添字演算子`[]`は演算対象となるもの(オペランド)を2つ取り、「ポインタ型または配列型」と整数型である必要があります。
|
22
|
-
|
26
|
+
* 添字演算子`[]`は `p[N] = *(p+N)`となるように *定義されています。*
|
23
|
-
説明が省略されているわけではなく、
|
24
|
-
|
27
|
+
* 加算演算子`+`は左右オペランドを交換しても同じ結果になります。すなわち、`a+b = b+a`です。
|
25
28
|
|
29
|
+
以上を踏まえると
|
30
|
+
* `p[N] = *(p+N)`である
|
31
|
+
* `N[p] = *(N+p)`である
|
32
|
+
* `p+N = N+p`である
|
33
|
+
* したがって`p[N] = N[p]`である
|
34
|
+
|
35
|
+
ということになります
|
1
修正
test
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
> なぜp[N]=N[p]となるのか
|
18
18
|
|
19
19
|
説明のとおりです。
|
20
|
-
> 「p[N]=*(p+N)でありp[N]=*(p+N)=* (N+p)=N[p]となり実質的に同じアドレス値になる」
|
20
|
+
> 「`p[N]=*(p+N)`であり`p[N]=*(p+N)=* (N+p)=N[p]`となり実質的に同じアドレス値になる」
|
21
21
|
|
22
22
|
この`p[N]=*(p+N)`の部分がなんでそうなるのかわからないという場合は、
|
23
23
|
説明が省略されているわけではなく、
|