2011-04-16 135 views
0
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),我上面的代码中使用,但我得到它说可变大小的对象可能不被初始化错误。是不可能初始化零数组?需要你的帮助....感谢如何初始化在C++

+1

要注意的是:你有2个变量名为'i'。一个在片段顶部的变量列表中,另一个在for循环中。不知道它是否编译(可能是),但循环中的我掩盖另一个。你应该补救。 – joce 2011-04-16 20:02:14

回答

0

或者到的std ::向量上述建议,你也可以这样做:

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; 
+0

我使用这些代码,但我的结果显示非常大的值,我希望这是因为指针(val3)。如何获得这个指针的值? – aki 2011-04-16 22:21:17

+0

我假设你的意思是“如何获得这个指针指向的值”?如果是这种情况,则val3 [n]代表[0,x-1]中的n。例如对于x = 3,你有val3 [0],val3 [1],val3 [2]。 – joce 2011-04-16 22:36:22

+0

是的,我需要得到val3的值... – aki 2011-04-16 22:37:42

3
int val3[x] = {}; 

C++不允许阵列与一个变量是不是编译时间常数初始化。对所有变量使用const inti除外)。 顺便说一句,你不使用第一个int i(循环外)。

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);