ホームページ >バックエンド開発 >C++ >&array[5] は、終端の 1 つ前の配列要素にアクセスするための有効な C 式ですか?

&array[5] は、終端の 1 つ前の配列要素にアクセスするための有効な C 式ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 00:44:11513ブラウズ

Is &array[5] a Valid C   Expression for Accessing the One-Past-the-End Array Element?

&array[5] を使用した末尾の 1 つ前の配列要素へのアクセス

質問:

&array[5] は 1 つ前の要素を参照する有効な C コード式と見なされます配列の終わりですか?

答え:

はい、&array[5] は C 標準に従って正当な C コードとみなされます。

詳しい説明:

C99標準:

  • 6.5.2.1、段落 2: 添え字演算子 [] を (((E1) (E2) と同等のものとして定義します) ))、ここで、E1 は配列オブジェクト、E2 はinteger.
  • 6.5.3.2、段落 3: & 演算子のオペランドが [] 演算子の結果である場合、& 演算子と暗黙の単項 * は評価されないことを示しますその結果、& 演算子が削除され、[] 演算子が演算子に置き換えられます。

C標準:

  • 6.5.6、段落 8: 逆参照されない限り、ポインターが配列の最後の要素の 1 つ先を指すことを許可します。

これらの標準に基づいて、式 &array[5] は次のように評価されます。

  • &(&array[5]) = &(配列 5)
  • &*(配列 5) = 配列 5

配列 5 は配列の終わりの 1 つ先を指しており、逆参照されていないため、&array[5] は有効な式。

C 標準との比較:

この点において、C 標準は C 標準と一致します。

これを扱う理由配列 5 や &array[4] 1 との違い:

の主な違い&array[5] と、array 5 や &array[4] 1 のような式は、本来の用途です。配列 5 と &array[4] 1 は明示的にポインター演算を実行して配列の先頭からオフセットされたポインターを取得しますが、&array[5] は [] 演算子を使用してそのオフセットにある要素に直接アクセスします。この区別により、プログラマは明示的なポインタ演算を実行することなく、配列の末尾をより簡単に参照できるようになります。

以上が&array[5] は、終端の 1 つ前の配列要素にアクセスするための有効な C 式ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。