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

김민기님의 프로필 이미지
김민기

작성한 질문수

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

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

10.16 다차원배열 함수전달시 질문

작성

·

231

0

함수 선언시( int ar[][],int row,int col )

이런식으로 받는다면 배열에 대해서 col까지 고려안해도 되니까 훨씬 일반적인 것 아닌가요?? 이런식으로 못하는 이유가 있나요??

 

1차원 배열을 함수로 받을때엔

(int ar[], int row) 이런식으로 받았는데 저렇게 받으면 안되는 이유가 있나요??

답변 1

0

안녕하세요 :)

강의에서 사용된

 

int sum2d_1(int ar[ROWS][COLS]);

혹은

int sum2d_2(int ar[][COLS], int row);

를 아래와 같이 선언해도 문제 없지 않냐는게 질문이신 것 같습니다.

int sum2d( int ar[][],int row,int col )

 

강의에서 언급했듯이,

컴파일러는 배열의 첫번째 요소 (위 예시에서는 ROW)을 무시합니다. 

(그렇기에 생략이 가능합니다)

그리고 나머지 요소(위 예시에서는 COL)는 꼭 적어주어야 합니다.

 

만일 아래와 같이 전달한다면 int ar[][]가 얼만큼의 크기를 할당받아야 할지 

컴파일러 입장에서는 불명확하겠죠.

 

int sum2d( int ar[][],int row,int col )

 

답변이 되었기 바랍니다.

감사합니다!

김민기님의 프로필 이미지
김민기
질문자

감사합니다

김민기님의 프로필 이미지
김민기

작성한 질문수

질문하기