2013-07-18 2 views
0

이 함수는 다차원 2d (6x6) 배열을 0으로 초기화하는 데 사용됩니다. 나는 그것을 테스트하기 위해 cout을 사용하는 main 함수를 호출하고 쓰레기를 출력한다. 도와주세요. 감사!가비지를 출력하는 다차원 배열 함수?

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

테스트에 문제가 있습니다.
어떻게 간단한 테스트를 망칠 수 있습니까? 그냥 사용 가치 (6) 컴파일 시간에 알려진

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

경우에, 나는 중첩 된 방식으로 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을 한 번에 소개해야합니까? :) –

+0

안전하고 읽기 쉬운 코드를 작성하는 데 필요한만큼 많이. – chris