1차원배열을 함수에 집어넣을땐 포인터 형식으로 집어넣잖슴. 예를들자면


void arrFunc(int* arr){

for (int i = 0; i < 4; i++){

*(arr + i) = 10;

}

return;

}


int main(){

int arr[4] = { 0,0,0,0 };

arrFunc(arr);


printf("%d\n", arr[0]);

printf("%d\n", arr[1]);

printf("%d\n", arr[2]);

printf("%d\n", arr[3]);


return 0;

}


이렇게 하면 출력은


10

10

10

10


이렇게 잘 뜬단 말이지 ㅇㅇ

그런데 다차원 배열(예를들어 2차원배열)을 함수에 집어넣으면


void arrFunc(int** arr){

for (int i = 0; i < 4; i++)

{

*(*arr + i) = 10;

}

return;

}


int main(){

int arr[2][2] = { 0,0,0,0 };

arrFunc(arr);


printf("%d\n", arr[0][0]);

printf("%d\n", arr[0][1]);

printf("%d\n", arr[1][0]);

printf("%d\n", arr[1][1]);


return 0;

}


arrFunc함수가 작동하지 않으면서 출력도 되지 않음. 근데 arrFunc() 부분을 별개의 함수로 따로 분리해놓지 않고


int main() {


int arr[2][2] = { 0,0,0,0 };

for (int i = 0; i < 4; i++)

*(*arr + i) = 10;


printf("%d\n", arr[0][0]);

printf("%d\n", arr[0][1]);

printf("%d\n", arr[1][0]);

printf("%d\n", arr[1][1]);


return 0;

}


이렇게 할 경우


10

10

10

10


출력 잘 됨.


왜 이런 문제가 생기는 거고

그렇다면 다차원배열을 함수에 집어넣을땐 어떻게 함수를 짜야하는거야??