为什么在这种情况下使用int*arr=new int[number]? 我是C++初学者。我看到了一个示例代码,如下所示: int quantity; cout << "Enter the number of items: " << endl; cin >> quantity; int *arr = new int[quantity]; for(int i=0; i <quantity; i++) { cout<< "Enter item no." << i << endl; cin >> arr[i]; } int数量; 产量; int*arr=新int[数量]; for(int i=0;i

为什么在这种情况下使用int*arr=new int[number]? 我是C++初学者。我看到了一个示例代码,如下所示: int quantity; cout << "Enter the number of items: " << endl; cin >> quantity; int *arr = new int[quantity]; for(int i=0; i <quantity; i++) { cout<< "Enter item no." << i << endl; cin >> arr[i]; } int数量; 产量; int*arr=新int[数量]; for(int i=0;i,c++,C++,quantity不是编译时常量,因此: int arr[quantity]; …不是有效的C++(即使它是有效的C99)。< /P> 您的代码可能会编译,因为您的编译器是允许此构造的扩展,例如: 在ISOC99中允许可变长度自动数组,并且作为扩展> GCC接受C90模式和C++中的。 使用-pedantic编译应该至少会给您一个警告。GCC给了我以下信息(使用-pedantic): 8::8:21:警告:ISO C++禁止可变长度数组“ARR”[Wvla ] < /P> int arr[q

quantity
不是编译时常量,因此:

int arr[quantity];

…不是有效的C++(即使它是有效的C99)。< /P> 您的代码可能会编译,因为您的编译器是允许此构造的扩展,例如:

在ISOC99中允许可变长度自动数组,并且作为<强>扩展> <强> GCC接受C90模式和C++中的。

使用
-pedantic
编译应该至少会给您一个警告。GCC给了我以下信息(使用
-pedantic
):

8::8:21:警告:ISO C++禁止可变长度数组“ARR”[Wvla ] < /P>

int arr[quantity];
请注意,在这种情况下,您可能应该使用
std::vector
,而不是手动分配的数组:

std::vector<int> arr(quantity);
std::向量arr(数量);

数量
不是编译时常量,因此:

int arr[quantity];

…不是有效的C++(即使它是有效的C99)。< /P> 您的代码可能会编译,因为您的编译器是允许此构造的扩展,例如:

在ISOC99中允许可变长度自动数组,并且作为<强>扩展> <强> GCC接受C90模式和C++中的。

使用
-pedantic
编译应该至少会给您一个警告。GCC给了我以下信息(使用
-pedantic
):

8::8:21:警告:ISO C++禁止可变长度数组“ARR”[Wvla ] < /P>

int arr[quantity];
请注意,在这种情况下,您可能应该使用
std::vector
,而不是手动分配的数组:

std::vector<int> arr(quantity);
std::向量arr(数量);

<代码>你正在使用扩展。标准C++不允许你做的改变。请注意,通常写的方法是:代码> STD::向量ARR(数量)<代码> >新< /代码>,别忘了<代码>删除< /代码>。但是,这些代码> CUT<代码> >代码> CIN < /代码>意味着你有一个使用名称空间STD的<<代码>;<代码>某处。我看到一个示例代码,它是坏代码,不要从中学习。使用STD::vector!你正在用扩展来构建。标准C++不允许Chan-Chan.请注意,通常的编写方法是
std::vector arr(数量)
。如果您使用
新建
,不要忘记
删除
。脱离主题,但这些
不能
cin
意味着您有一个
使用名称空间std;
的地方。我看到过一个示例代码,它是不好的代码,不要从中学习。使用std::vector!