2013-07-18 44 views
0

我有這個函數意味着初始化一個多維2d(6x6)數組爲零。我使用cout調用主函數來測試它並輸出垃圾。請幫忙。謝謝!多維數組函數輸出垃圾?

int** initializeArray(void) 
{ 
    typedef int* rollArray;  //this line is actually outside of the function in my 
           //program 
int i, j; 
rollArray *m = new rollArray[6]; 

for (i = 0; i < 6; i++) 
    m[i] = new int[6]; 

for (i = 0; i < 6; i++) 
    for (j = 0; j < 6; j++) 
     m[i][j] = 0; 

return m; 
} 
+0

修復你的代碼縮進請 – Borgleader

+0

你正在初始化一維數組... –

+2

包括你輸出的測試代碼垃圾。 – Yakk

回答

0

問題出在您的測試。
你怎麼能搞砸這樣一個簡單的測試?只需使用:

int ** a = initializeArray(); 
int i,j; 
for (i = 0; i < 6; i++) { 
    for (j = 0; j < 6; j++) { 
     cout << a[i][j] << " "; 
    } 
    cout << endl; 
} 
1

如果該值爲6在編譯時是已知的,我會建議以嵌套的方式使用std::array。例如:

#include <array> 
#include <iostream> 

int main() 
{ 
    std::array<std::array<int,6>,6> a = {0}; 

    for (int i = 0; i < 6; ++i) 
    { 
     for (int j = 0; j < 6; ++j) 
     { 
      std::cout << a[i][j] << std::endl; // Prints 0. 
     } 
    } 

    return 0; 
} 

事實上,你甚至不需要創建一個函數來初始化你的數組。聲明你的嵌套數組,你很好走。 (如果你在編譯時不知道尺寸,你可以用類似的方式使用std::vector。)

+0

更好的是,您可以使用ranged-for循環來打印它。 – chris

+0

真的......我們應該一次介紹多少C++ 11? :) – 2013-07-18 23:26:33

+0

儘可能多地寫出更安全或更易讀的代碼imo。 – chris