VS 2013不会使用用户输入进行数组大小分配

时间:2013-12-06 20:18:55

标签: arrays const visual-studio-2013

我已经看过几次类似的问题,但我无法调试此问题。自从从Dev C ++转移到Win8.1上的VS以来,我已经多次遇到过这种情况。当我声明一个数组大小时,我在编译期间继续得到C2057和C2466错误。我知道这与编译时没有声明常量有关,但我不确定如何纠正问题。非常感谢任何帮助,谢谢!您将看到我的各种尝试,但无论我走哪个方向,似乎都会产生更多错误。

#include <iostream>
#include <cstdlib>
//#include<vector>

using namespace std;
int main()
{
int row, col, r, c;
//const int row = 1;
//const int col = 1;
float k;
cout << "Enter the number of rows and columns you want in your array: " << endl;
cin >> row >> col;
//const int a = row;
//const int b = col;
//float* array = new float[row][col];
float array[row][col];
//vector<float>array[row][col];
cout << "Enter the elements: " << endl;

1 个答案:

答案 0 :(得分:0)

您试图在该代码中声明的动态大小数组只是C99标准的一部分,而不是旧C或C ++标准。这就是VS编译器抱怨的原因。因为visual studio编译器仍然没有完全实现C99功能集。

要使代码工作,你必须使用堆分配的内存,或者在C ++中使用std :: vector更好。

上面用于std :: vector的语法错误。你宁愿需要这样的东西:

std::vector< std::vector< float > > float_vector(rows, std::vector< float >(cols) );

这将创建一个浮动向量的向量。构造函数在外部向量中创建rows元素,并且对于每个元素(即每个包含的向量),使用具有cols元素的向量。

相关问题