ホームページ > バックエンド開発 > C++ > C 配列を可変長で初期化できないのはなぜですか?

C 配列を可変長で初期化できないのはなぜですか?

Linda Hamilton
リリース: 2024-12-15 09:05:11
オリジナル
546 人が閲覧しました

Why Can't I Initialize a C   Array with a Variable Length?

変数と数値リテラルによる配列の初期化を理解する

問題:

C では、 int n = などの可変長の配列を初期化しようとしています。 10; double tenorData[n] = {1, 2, 3, ...} の場合、コンパイル エラーが発生します。ただし、double tenorData[10] などの固定長での初期化は成功します。なぜこのようなことが起こるのでしょうか?

答え:

C では、可変サイズの配列は許可されません。特定のコンパイラー ( G など) の拡張機能ではこれらが許可されていますが、標準によれば、これらは依然として違法です。 C で可変長の配列を作成するには、次のいずれかを実行できます:

  • メモリを動的に割り当てる: ポインタを使用して手動でメモリを割り当てますが、後で割り当てを解除することを忘れないでください。
  • 標準コンテナを使用します: std::vector のようなコンテナを利用して動的メモリを処理します

それでも配列が必要な場合は、変数の代わりに定数値を使用することを検討してください。

  • 定数: 配列サイズを次のように宣言します。 const int n = 10 などの定数。 double a[n];、定数はコンパイル時に評価されるため。
  • Constexpr (C 11 ): 関数によって決定される値については、コンパイル時に式も評価する constexpr を使用します。

以上がC 配列を可変長で初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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