인프런 커뮤니티 질문&답변
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 )
답변이 되었기 바랍니다.
감사합니다!






감사합니다