행 우선 순서로 저장되는 C 언어 2차원 배열 char a[3][5]가… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 22년 1회차
행 우선 순서로 저장되는 C 언어 2차원 배열 char a[3][5]가 선언되고 초기화되었을 때, a[2][3]과 다른 값을 가지는 것은?
1
*(a+5*2+3)
2
*(&a[0][0]+5*2+3)
3
(a[0]+5*2)[3]
4
(*(a+2))[3]
해설
a[2][3]과 값이 다른 것은 *(a+5*2+3)이다.
a는 문자 5개짜리 행을 가리키는 포인터라 a+1은 한 행씩 이동한다. 따라서 a+13은 배열 범위 밖의 13행 뒤를 가리키고, 역참조 결과도 문자 값이 아니라 행 배열(주소)이다.
- *(&a[0][0]+5*2+3): 문자 포인터에서 13칸 이동하므로 행 우선 저장에서 a[2][3]이다.
- (a[0]+5*2)[3]: a[0]은 문자 포인터이므로 13칸 뒤 원소, 곧 a[2][3]이다.
- (*(a+2))[3]: *(a+2)는 a[2]이므로 a[2][3]과 같다.
오류나 개정된 내용이 보이면 알려주세요