可能重复:
C/C++:允许运行时不带动态分配的数组大小?
我在一个班级,我们有一个简单的任务来编写一个函数,该函数返回一个指向动态数组的指针并提供一个存根来测试它。我已经完成了这项工作,所以我不会在作业上寻求帮助。在课堂博客上,另一位学生建议直观的是,应该能够int Array[size];
在size
显然是用户定义变量的地方进行操作。
我知道在标准 C++ 中,至少根据我的文本,数组必须有一个“常量整数表达式......大于零”作为大小声明符。这对我来说意味着他们的例子行不通。事实上,使用 VS2010 时,您会遇到三个错误。
但是,他们解释说:
我知道,你知道,甚至我的 Ubuntu 安装中的 g++ 编译器和我的 WinXP 安装中的 Bloodshed 编译器都知道这一点。对于某些级别的“知道”,人们会期望“int Array[size];” 工作(就像在之前的两个课程中一样)。
但显然它无法在某些人的 VS 编译器上运行。只能假设,因为共同点是 VS(是的,我通过让朋友在他的盒子上检查确认了这一点),VS 是问题所在。几个之一。
已经有混乱,因为这I know that...
部分是指我告诉他们不应该有任何理由来#include <new>
使用new
,但似乎他们认为我们同意不应该有任何理由使用new
来分配动态数组。( ?)
所以问题很明显。是否有任何编译器可以接受int Array[size];
,其中 size 不是const int
没有错误的?