C では、配列要素のアドレスを取得できますか次のコードに示すように、末尾の 1 つ先は添え字を使用して取得します。スニペット?
int array[5]; int *array_begin = &array[0]; int *array_end = &array[5];
具体的には、&array[5] は C 標準に準拠していますか?
はい、コードは C 標準に準拠しています。
C99原稿による標準:
§6.5.2.1、段落 2:
角括弧 [] で囲まれた式が続く後置式は、配列の要素を添字で指定します。オブジェクト。
§6.5.3.2、段落3:
[& 演算子の] オペランドが [] 演算子の結果である場合、& 演算子も、[] によって暗示される単項 * も評価されず、結果は& 演算子が削除され、[] 演算子が演算子に変更されたかのように。
§6.5.6、段落8:
式 P が配列オブジェクトの最後の要素を指す場合、式 (P) 1 は配列オブジェクトの最後の要素の 1 つ先を指します。
に基づくこれらの抜粋:
したがって、式 &array[5] は *(配列 5) と同等であり、これは配列を指します。配列の最後の要素の 1 つ先。これは、ポインタが逆参照されない限り、標準に従って合法です。
以上がサブスクリプションによる C 配列の末尾 1 つ後のアドレスの取得は合法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。