int M=7;
int N=6;
int i=0;
int x=N*M;
int val3[x] = {};
for(int i=0;i<x;i++)
{
//some calculations
if (my condition)
{
//if this condition ok, change value of val[i]
}
cout << i << " " << val[i] << endl;
}
我想初始化一个零array(val)
,我使用了上面的代码,但是我得到一个错误,说可变大小的对象可能没有被初始化。是不是可以初始化零数组?需要你的帮助....谢谢
答案 0 :(得分:4)
C ++不包含可变长度数组;具有int val3[ x ]
非常数的x
是C99的一项功能。并非所有C99功能都是C ++的一部分。尝试使用std::vector
。
#include <vector>
// contains an array of length x, automatically filled with zeroes
std::vector< int > val3( x );
答案 1 :(得分:3)
int val3[x] = {};
C ++不允许使用不是编译时常量的变量初始化数组。对所有变量使用const int
(i
除外)。
顺便说一下,你不要先使用int i
(在循环之外)。
答案 2 :(得分:0)
除了上面建议的std :: vector之外,你还可以这样做:
int M=7;
int N=6;
int x=N*M;
int* val3 = new int[x];
memset(val3, 0, x * sizeof (int));
for (int i = 0; i < x; i++)
{
// ...
}
// ...
delete [] val3;