C および C で Index[array] を使用した配列へのアクセス
次のコード スニペットを考えてみましょう。
int arr[] = {1, 2, 3}; 2[arr] = 5; // Does this compile? assert(arr[2] == 5); // Does this assertion fail?
一部の面接官は、なぜこのコード スニペットがコンパイルされずに実行されるのかと尋ねるかもしれません。エラー。
コードを理解する
式 2[arr] は *(2 arr) と同等です。 C と C では加算が可換であるため、 [] の引数の順序は重要ではありません。したがって、2[arr] は配列 arr の 3 番目の要素に効率的にアクセスします。
これは言語仕様によって保証されていますか?
はい。 C および C 標準では、この動作が明示的に規定されています:
。したがって、index[array] を使用した配列へのアクセスは、たとえそうであっても、言語仕様によって保証されています」珍しい、または直観に反する。
以上が`2[arr]` は C および C で動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。