ホームページ  >  記事  >  バックエンド開発  >  Cで可変サイズの配列を宣言できますか?

Cで可変サイズの配列を宣言できますか?

DDD
DDDオリジナル
2024-11-01 22:11:29388ブラウズ

Can You Declare an Array with a Variable Size in C  ?

C での可変配列サイズ宣言

C では、通常、配列のサイズは定数の整数値であることが期待されます。ただし、サイズとして非定数変数を使用して配列を宣言できるかどうかという疑問が生じます。

Bjarne Stroustrup が『C プログラミング言語』で強調したように、「配列バインドは定数式でなければなりません」。その結果、以下のコードは正しくないとみなされます:

<code class="cpp">int ArraySize = 5;
int MyArray[ArraySize]; // incorrect</code>

しかし、驚くべきことに、GCC v4.4.0 などの一部のシステムでは、コードは正常にコンパイルされます:

<code class="cpp">void f(int i) {
    int v2[i];
}

int main() {
    int i = 3;
    int v1[i];
    f(5);
}</code>

この予期しない動作これは標準に対する GCC 拡張によるものです。デフォルトでは、GCC では配列サイズとして非定数変数の使用が許可されています。ただし、これはすべてのコンパイラやプラットフォームでサポートされている機能ではない可能性があります。

移植性が要件の場合は、GCC で -pedantic オプションを使用してこの拡張機能の警告を有効にするか、-std=c を使用することを強くお勧めします。 98 を入力するとエラーが発生します。標準に準拠することで、コードの信頼性が高まり、クロスプラットフォーム互換性が高まります。

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

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