2011-04-16 198 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);