teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2016/07/06 22:24

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -10,4 +10,9 @@
10
10
  しかし、dose の指し示すポインタが仮に1024 で int のサイズが 4 であるとすると、&dose[3]=1024+3*4、&3[dose]=3+1024*4 となり、等しくありません。従って、解説は間違っています。
11
11
 
12
12
  ###追記
13
- と書いた後で確かめて、実際に int であろうが long であろうが成り立つことがわかりました。この本のアドレス計算の部分はやはり誤りでしたが、配列に関しては逆にしても成り立ちます。
13
+ と書いた後で確かめて、実際に int であろうが long であろうが成り立つことがわかりました。この本のアドレス計算の部分はやはり誤りでしたが、配列に関しては逆にしても成り立ちます。
14
+
15
+ ###訂正
16
+ よく調べもせずにいい加減なことを書きました。
17
+ 私の書いた内容が誤りです。
18
+ 訂正してお詫びします。

1

修正

2016/07/06 22:24

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -7,4 +7,7 @@
7
7
  JAVA などの処理系では当然エラーになる構文ですが、C では配列のアドレスは単純に計算によって求められ、範囲外かどうかのチェックはありません。
8
8
  従って、計算として正しいならば通ってしまいます。
9
9
 
10
- しかし、dose の指し示すポインタが仮に1024 で int のサイズが 4 であるとすると、&dose[3]=1024+3*4、&3[dose]=3+1024*4 となり、等しくありません。従って、解説は間違っています。
10
+ しかし、dose の指し示すポインタが仮に1024 で int のサイズが 4 であるとすると、&dose[3]=1024+3*4、&3[dose]=3+1024*4 となり、等しくありません。従って、解説は間違っています。
11
+
12
+ ###追記
13
+ と書いた後で確かめて、実際に int であろうが long であろうが成り立つことがわかりました。この本のアドレス計算の部分はやはり誤りでしたが、配列に関しては逆にしても成り立ちます。