2

実際に C99 と C11 で const キーワードを使用して、このような定数式を作成できますか? それについてどのような基準が述べていますか?

const int n = 5;

int main()
{
   int arr[n];
}

C89 / C90 ではできません。

4

3 に答える 3

5

constC のNo.は定数を意味することはありませんが、ready-only を意味します。

C90/C99/C11も同様です。

この例では、可変長配列を使用していることに注意してください。VLA は C99 で導入され、VLA のサイズは定数式である必要はありませんが、それでも定数式でnはありません。

于 2012-09-09T21:16:10.280 に答える
1

いいえ、constC++ のように定数を作成しません。

一方、C99 では可変長配列 (VLA) が追加されたため、autoストレージ クラスのサイズは定数である必要はありません。これにより、次のようなことができます。

int f(int n) { 
    int array[n];
    // ...
}

したがって、求めていることを正確に実行することはできませんが、多くの(おそらくほとんどの) 状況で同等に近いことを行うことはできます。

于 2012-09-09T21:21:59.537 に答える