인프런 커뮤니티 질문&답변

조준수님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C언어

10.16 다차원 배열을 함수에게 전달해주는 방법

10:33 코드 변형하다가 에러발생

작성

·

252

0

위의 코드에서 보시다시피 똑같은 코드임에도 불구하고
main 함수내에서 작성하였을때는 오류가 나지 않는데
함수내에서 작성시 위와같은 에러가 발생합니다.
현재까지 배운 지식으로는 도저히 이유를 알수가 없습니다.
검색해봐도 뜨지않네요.

답변 1

1

조준수님의 프로필 이미지
조준수
질문자

2021. 07. 02. 15:07

원인은 알았는데요. 배열을 포인터 변수에 넣을경우에

넣을 배열이 1차원이든 2차원이던간에

포인터 변수에서는 무조건 1차원으로 인식을하는것 같습니다.

그래서 위의 식이 틀릴 수밖에 없는거고요

혹시 제가 맞게 이해한건지 궁금합니다.

안소님의 프로필 이미지

2021. 07. 03. 02:18

비슷합니다. 

매개변수를 int* arr 로 설정을 하셨는데, 이는 하나의 주소값을 담는 하나의 포인터 변수입니다.

지금 int * arr 포인터 변수 하나로 이차원 배열을 참조할 수 있도록 시도를 하신거에요!

int * arr 매개변수에 2차원 배열 arr 값을 대입하였으니 int * arr 는 본인이 저장한 주소값이 2차원 배열의 주소값인지에 대한 정보를 알리가 없습니다! 그저 주소값 하나만 딱 저장할 뿐이죠.

그래서 저렇게 두 번 간접참조하는게 에러가 나는 것입니다. 

조준수님의 프로필 이미지
조준수
질문자

2021. 07. 05. 13:07

아 명확하게 정리가 되었습니다. 감사합니다!!