末尾の 1 つ先の配列要素のアドレスを取得することは、C 標準で許可されていますか?
以下のコード スニペットは、次のような議論を引き起こしています。 C 標準に従った有効性:
int array[5]; int *array_begin = &array[0]; int *array_end = &array[5];
具体的には、&array[5] は有効ですかこのコンテキストにおける C 式?
C 標準による合法性
C 標準では、この式の正当性が定義されています:
解釈
これらのルールを &array[5] に適用すると、 have:
&array[5] = &*(array + 5) = (array + 5)
(配列 5) は配列の終わりの 1 つ先を指しており、逆参照されていないため、これは C 標準による正当な式です.
C 標準との比較
この動作は C 標準とも一致します。これにより、やはり逆参照されない限り、配列の末尾を越えた要素のアドレスを取得できます。
異なる処理の理由
配列 5 を処理する決定&array[4] 1 は、これらの式の異なる目的に基づいています。
以上がC 配列の終わりの 1 つ先のアドレスを取得することは合法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。