1. ホーム
  2. c

[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?

2022-03-15 18:21:39

疑問点

でJoelが指摘しているように スタックオーバーフローポッドキャスト#34 である。 C言語 (aka: K & R) の中で、C言語の配列のこの性質について言及されています。 a[5] == 5[a]

Joelはポインタ演算のせいだと言っているが、まだ理解できない。 なぜ a[5] == 5[a] ?

解決方法は?

C言語規格では [] 演算子は次のようになります。

a[b] == *(a + b)

したがって a[5] と評価されます。

*(a + 5)

5[a] が評価されます。

*(5 + a)

a は配列の最初の要素へのポインタです. a[5] は、その値が5 要素 からさらに a と同じである。 *(a + 5) であり、小学校の算数でこれらは等しいことが分かっています(足し算は 可換 ).