【发布时间】:2012-09-18 20:35:27
【问题描述】:
可能重复:
C/C++: Array size at run time w/o dynamic allocation is allowed?
我在一个类中,我们有一个简单的任务来编写一个函数,该函数返回一个指向动态数组的指针并提供一个存根来测试它。我已经完成了这项工作,所以我不会在作业上寻求帮助。在课堂博客上,另一位学生建议很直观地应该能够做到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];,其中大小不是const int 而不会出错?
【问题讨论】:
-
查找变长数组。一些编译器将它们作为扩展提供。无论如何,没有需要使用
new。最好只使用矢量。
标签: c++ visual-studio compiler-construction g++