2017-12-23 13 views
0
do_something(int array[][]) 
{ 

} 

int main() 
{ 
    int array_length; 
    cin>> array_length; 
    int array[array_length][array_length]; 
    for() 
    { 
     "putting elements of array" 
    } 
} 

저는 사람들이 어떤 배열을 함수에 전달할 수 있도록 const int을 넣는 것을 보아 왔습니다. 질문은 입력 될 때까지 크기를 모르는 경우 함수에 다차원 배열을 전달하는 방법입니다.다차원 배열을 function_111에 전달

+2

동적 배열의 경우 표준 배열을 사용하지 마십시오. 'std :: vector'를 사용하고 당신의 삶을 더 단순하게 만드십시오. –

+0

'function_111'이란 무엇입니까? – Barmar

+0

C++에는 가변 길이 배열이 없습니다. 당신의 선언'int array [array_length] [array_length];'는 유효하지 않습니다. – Barmar

답변

1
int array[array_length][array_length]; 

이 줄은 컴파일되지 않습니다. 다른 언어 (Java, 가능)와 달리, 동적 크기의 배열을 할당하는 것은 일정한 크기의 배열과 다릅니다. [] 표기법을 사용하면 일정 크기의 배열이 만들어지며 array_length 전달 시도가 작동하지 않습니다. 사용하여 동적으로 배열을 할당하려면

int **array = new int*[array_length]; 

다음은 array 반복이 후

array[i] = new int[array_length]; 

으로 올바른 크기로 각 하위 배열을 할당해야합니다, 당신은 참조해야합니다 array을 반복 할 때 배열의 크기 만 표시됩니다.

+0

아, 그게 내가 빨리 일하는 것입니다. 그리고 예, 벡터는이 작업을 능숙하게 수행하지만 좋은 도구를 사용하기 전에 할당이 실제로 무엇을하는지 배우는 것이 좋습니다. – Qwertycrackers