如何在c ++中初始化零数组

时间:2011-04-16 19:46:17

标签: c++ arrays initialization

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),我使用了上面的代码,但是我得到一个错误,说可变大小的对象可能没有被初始化。是不是可以初始化零数组?需要你的帮助....谢谢

3 个答案:

答案 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 inti除外)。 顺便说一下,你不要先使用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;