문제
C언어에서 2차원 배열 int a[2][2];가 선언되었을 때, 첫 번째 요소인 a[0][0]의 주소값을 가리키는 표현으로 옳지 않은 것은?
① a ② &a[0][0] ③ *a ④ &a[0]
정답
4번
해설
정답: 4. &a[0]은 첫 번째 행 전체를 가리키는 포인터로, a[0][0]의 주소와는 타입이 다르다.
오답 풀이
- 1번:
a는 배열 문맥에서 첫 번째 행을 가리키며 주소값 자체는 배열의 시작 주소와 같다. - 2번:
&a[0][0]은 첫 번째 요소의 주소이다. - 3번:
*a는 첫 번째 행의 첫 원소 주소로 변환될 수 있다. - 4번:
&a[0]은 첫 번째 행 전체를 가리키므로 타입이 달라 가장 부적절하다.
보충 개념 2차원 배열에서는 주소값이 같아 보여도 포인터 타입과 증가 단위가 달라질 수 있다.