ホームページ >バックエンド開発 >C++ >C で配列サイズを定義するために変数を使用できないのはなぜですか?

C で配列サイズを定義するために変数を使用できないのはなぜですか?

DDD
DDDオリジナル
2024-10-29 06:12:031015ブラウズ

Why Can't I Use a Variable to Define an Array Size in C  ?

配列サイズとしての Const Int: 条件付き許容

どちらの例でも、配列のサイズを指定するために const int を使用しますが、 C では最初の式のみが許可されます。この矛盾の理由は、2 つの式のセマンティクスにあります。

最初の式 const int size = 2 は、定数式 であり、その値は実行中に完全に評価できることを意味します。編集。これにより、コンパイラはコンパイル時に配列のサイズを決定し、適切な量のメモリを予約できるようになります。

対照的に、2 番目の式 const int size = a は、非を表します。 -constantexpression。a は可変変数であるため。したがって、コンパイラは実行時までサイズの値を保証できず、コンパイル中に配列を割り当てることができなくなります。

この区別は、 C における「式の種類」の重要性を強調しています。配列サイズとして非定数式を使用すると、コンパイラはプログラムを実行せずに必要なサイズを決定できないため、コンパイル時のメモリ予約ができなくなります。この制限は、実行時に変数の値を決定するプロセスであるフロー分析の厳格なルールと複雑さの結果です。

以上がC で配列サイズを定義するために変数を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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