私はヘッドファーストCを読み、これまでのところうまくいってますが、私はこの例に問題を抱えている -から3を[ARR]
int doses[] = {1, 3, 2, 1000};
printf("Issue dose %i", 3[doses]);
結果=「発行用量1000」
私はこれが何をするのか知っています、それは線量配列のインデックス3にアクセスします。もっと技術的に私の理解は、それが配列の最初の要素のポインタアドレス(線量変数)
に三つの整数のサイズを追加することにある本は、私は
doses[3] == *(doses + 3) == *(3 + doses) == 3[doses]
ので、それが動作することを説明して*(3 +用量)== 3(用量)の間のその最終的なジャンプまでそれと一緒に。線量[3]が私が把握しやすいことを考えれば、私は正しく[]の意義を理解していないだろうか?
あなたの最後の「コード」の行における第二と第三式の場合、それがあることは明らかではありません'*(doses + 3)== *(3 + doses)'?最初の式と最後の式では、あなたはすでに「線量= 3 =線量」を理解していることを上に書いています。ポインタの算術演算は、等価な配列の索引付けと同じように動作します。フードの下にポインタを3つ追加すると '3 * sizeof'が返されます。 –
はい、なぜ私が質問したのかという演算子のC標準を見ていないので、3つの線量にジャンプするまでは明らかでした。重複の謝罪しかし、私はいくつかのバリエーションを試してみるのは非常に簡単なものではありません – SMC