【发布时间】:2018-04-03 07:25:26
【问题描述】:
动态和静态数组:当两者都可能时,使用一个而不是另一个的原因通常是什么?
其中一种情况可能是
int n;
cin >> n;
int a[n];
对
int n;
cin >> n;
int* a = new int[n];
【问题讨论】:
-
好吧,
int a[n]是 C++ 中的一个错误。 -
int a[n]称为变长数组,无效,不要写。 -
@melpomene,我可以编译并运行this,不会出错。
-
@HuXinqiao 那是因为编译器通常不仅支持标准 C++,还支持某些语言扩展。当传递正确的编译器标志(
-pedantic/-pedantic-errors与 GCC)时,将警告此类扩展。 -
@HuXinqiao 您可能在使用 gcc 时未启用警告。
标签: c++ arrays memory-management dynamic