ホームページ > バックエンド開発 > C++ > C/C でサイズ 0 の配列を定義するとどうなりますか?

C/C でサイズ 0 の配列を定義するとどうなりますか?

Mary-Kate Olsen
リリース: 2024-12-26 04:19:08
オリジナル
988 人が閲覧しました

What Happens When You Define a Zero-Sized Array in C/C  ?

C/C でサイズ 0 の配列を定義することの影響

C/C で配列を定義する場合、配列のサイズを指定する必要があります。 int array[0] の場合のように、サイズが 0 の配列を定義する動作について興味が湧くことがよくあります。

提供されたコード例では、GCC はコンパイル時にエラーや警告を生成しません。これにより、長さ 0 の配列がコンパイル中に最適化されるかどうかという疑問が生じます。

ISO 9899:2011 (C99) 標準によれば、配列のサイズを 0 にすることはできません。標準では、配列のサイズが定数式の場合、ゼロより大きい値を持たなければならないと明示的に規定されています。このルールは、プレーン配列と可変長配列 (VLA) の両方に適用されます。

言語標準にもかかわらず、一部のコンパイラでは、レガシー互換性または特定の目的のためにサイズ 0 の配列の定義を許可する場合があります。ただし、サイズ 0 の配列の動作が異なるコンパイラ間で一貫していることは保証されておらず、サイズ 0 の配列にアクセスしようとすると、未定義の動作が発生する可能性があります。

そのため、これをお勧めします。サイズがゼロの配列の定義を回避し、条件付きでメモリを割り当てるなど、他の手段で配列サイズがゼロになる可能性があるケースを処理します。

以上がC/C でサイズ 0 の配列を定義するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート