ホームページ >バックエンド開発 >C++ >C の配列宣言で「式には定数値が必要です」エラーが発生するのはなぜですか?

C の配列宣言で「式には定数値が必要です」エラーが発生するのはなぜですか?

DDD
DDDオリジナル
2024-12-02 01:21:10690ブラウズ

Why Does My C   Array Declaration Produce the

謎の解明: C 配列宣言の「式は定数値でなければなりません」の解読

謎のエラー メッセージ「式は定数値でなければなりません」が表示されるC で配列を宣言しようとするときは、定数値を持っていることを確認することが不可欠です。

提供した例のように、変数を使用して配列のサイズを指定すると、エラーが発生します。

int row = 8;
int col = 8;
int [row][col];

この場合、問題は発生します。配列のサイズは変数によって決まります。配列宣言が成功するには、その次元が一定である必要があります。つまり、コンパイル時にしっかりと確立されることを意味します。ただし、変数が関係する場合、その値はプログラムの実行中に変更される可能性があり、配列のサイズが流動的で変数になります。

この問題を解決するには、2 つの実行可能な解決策が浮かび上がります。

1.動的メモリ割り当て:

プログラムの実行中に変動する可能性のあるサイズの配列が必要な場合は、ヒープ上での動的メモリ割り当ての力を利用できます。これには、実行時に new 演算子を使用して明示的に配列にメモリを割り当て、その後、不要になったときに delete 演算子を使用してメモリの割り当てを解除することが含まれます。

// Allocate the array
int** arr = new int*[row];
for (int i = 0; i < row; i++)
    arr[i] = new int[col];

// Use the array

// Deallocate the array
for (int i = 0; i < row; i++)
    delete[] arr[i];
delete[] arr;

2.定数宣言:

また、固定サイズの配列が目的の場合は、配列の次元を const として宣言し、その値がプログラムの存続期間中ずっと変わらないことを示すことができます。

const int row = 8;
const int col = 8;
int arr[row][col];

結論として、C の配列宣言で「式には定数値が必要です」というエラーが発生した場合、鍵となるのは配列の次元を確保することです。はコンパイル時に定数です。動的なメモリ割り当てまたは定数宣言を採用することで、このハードルを難なく乗り越え、コーディング作業で配列の力を活用できます。

以上がC の配列宣言で「式には定数値が必要です」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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