所以我正在和我的朋友谈话,用一段代码帮助她,我一直认为数组需要是编译时常量,因为它们在堆栈中。但是她说她的朋友用这个代码做了这个:
#include <iostream.h>
#include <stdlib.h>
int main()
{
int value = ' ' ;
int sum = 0;
int count = 0;
cout<<"Please enter the total number of employees" <<endl;;
cin>> value;
int numbers[value];
cout<<"Now enter the employees corresponding salaries" <<endl;;
for (int k = 0; k < value; k++)
{
cin >> numbers[k];
}
}
他们正在使用Dev-C ++。
此代码是否有效?我不认为。
答案 0 :(得分:9)
可变长度数组是gcc
和g++
中的扩展...所以这在每个编译器中都不起作用。
有关gcc
对可变长度数组的支持的更多信息,您可以看到documentation here。
答案 1 :(得分:4)
我认为可变长度数组在C ++中是官方不支持的,但某些编译器和/或语言扩展实现了它们。
如果你想要一个可变长度数组,我建议使用std :: vector。 您可以在此处查看其参考:
答案 2 :(得分:2)
#include <iostream.h>
^不是标准标题。它曾经在预先标准的时间,即在1998年之前。它不存在于例如1998年之前。现代Visual C ++。
cin>> value;
int numbers[value];
可变长度数组或VGA是在C ++标准化一年后的C99中引入的。因此它们不是原始标准C ++的一部分,并且很高兴他们也没有被C ++ 11采用。而不是这样的野兽,使用例如来自std::vector
标头的vector
或其他标准库容器。
g ++支持可变长度数组作为语言扩展。你最好关掉这种扩展。如,
d:\dev\test> g++ foo.cpp d:\dev\test> g++ -pedantic -std=c++0x -Wall -O foo.cpp foo.cpp: In function 'int main()': foo.cpp:11: warning: ISO C++ forbids variable length array 'numbers' foo.cpp:7: warning: unused variable 'sum' foo.cpp:8: warning: unused variable 'count' d:\dev\test> _
答案 3 :(得分:0)
我尝试使用GCC 4.6进行编译,发现您发布的代码已成功编译。我也试过运行它,发现它有效,但我不认为代码非常好。