2013-07-18 50 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