我们真的可以在 C99 和 C11 中使用 const 关键字来构建这样的常量表达式吗?什么标准说的?
const int n = 5;
int main()
{
int arr[n];
}
在 C89 / C90 中我们不能。
我们真的可以在 C99 和 C11 中使用 const 关键字来构建这样的常量表达式吗?什么标准说的?
const int n = 5;
int main()
{
int arr[n];
}
在 C89 / C90 中我们不能。
C 中的No.const
从不表示常量,但表示仅就绪。
这与 C90/C99/C11 相同。
请注意,在您的示例中,您使用的是可变长度数组。VLA 已在 C99 中引入,VLA 的大小不需要是常量表达式,但仍然n
不是常量表达式。
不,const
不会像在 C++ 中那样创建常量。
另一方面,C99 确实添加了可变长度数组 (VLA),因此对于auto
存储类,大小不需要是常量。这使您可以执行以下操作:
int f(int n) {
int array[n];
// ...
}
所以,你不能完全按照你的要求去做,但你可以做一些在许多(也许是大多数)情况下足够接近等效的事情。
在 C 中,您可能会使用宏来定义常量的值。
以下是我的意思的一个例子。
#define N 5
int main() {
int array[N];
// ...
return 0;
}