강의

멘토링

로드맵

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

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

작성한 질문수

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

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

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

작성

·

267

0

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

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

 

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

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

퀴즈

C 언어에서 표준 배열의 요소들은 메모리에 어떻게 저장될까요?

서로 떨어진 위치에 임의로 저장된다.

링크드 리스트 형태로 연결되어 저장된다.

연속적인(contiguous) 메모리 공간에 저장된다.

스택에 쌓이는 형태로 저장된다.

답변 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 )

 

답변이 되었기 바랍니다.

감사합니다!

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

감사합니다

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

작성한 질문수

질문하기