ホームページ > バックエンド開発 > C++ > C での配列の初期化: `Array[n]` と `Array[10]` – 違いは何ですか?

C での配列の初期化: `Array[n]` と `Array[10]` – 違いは何ですか?

Susan Sarandon
リリース: 2024-12-16 14:56:11
オリジナル
704 人が閲覧しました

Array Initialization in C  : `Array[n]` vs. `Array[10]` – What's the Difference?

Array[n] と Array[10]: 配列サイズの変数の初期化と数値リテラルの違い

C プログラミングでは、配列データの保存と取得において重要な役割を果たします。ただし、配列の初期化を行う場合、特に可変長配列の使用に関連した落とし穴がある可能性があります。

次のコード スニペットを考えてみましょう。

int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ログイン後にコピー

このコードは初期化を目的としています。 TenorData という名前の配列。サイズは変数 n によって決定され、10 に設定されます。ただし、この方法では、可変サイズのオブジェクト tenorData を使用できないことを示すコンパイル エラーが発生します。

このコードの主な違いは、配列のサイズを定義するために変数 n を使用することにあります。 C では、可変長配列はサポートされていません。つまり、配列のサイズはコンパイル時に既知の定数でなければなりません。

この問題を解決して配列を正常に初期化するには、いくつかのオプションが使用できます。

  • 数値リテラルを使用します: サイズを変数に割り当てる代わりに、要素の数を直接指定できます。配列:
double tenorData[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ログイン後にコピー
  • 定数を使用します: 配列のサイズを定数として定義できます:
const int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ログイン後にコピー
  • 動的割り当てを使用する: 新しいメソッドを使用して配列にメモリを動的に割り当てます。演算子:
int n = 10;
double* tenorData = new double[n];
ログイン後にコピー

配列の使用が完了したら、delete [] tenorData を使用してメモリの割り当てを解除することを忘れないでください。

  • 標準コンテナを使用します: サイズを動的に調整できる std::vector のような標準コンテナの使用を検討してください。必要:
int n = 10;
std::vector<double> tenorData(n);
ログイン後にコピー

これらのガイドラインに従うことで、可変長配列に伴う落とし穴を回避しながら、C で配列を効果的に初期化できます。

以上がC での配列の初期化: `Array[n]` と `Array[10]` – 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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