다음 C 프로그램의 실행 결과는? (단, 2차원 배열의 경우 행 우선으… | [7급 국가직 자료구조론] 24년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 24년 1회차
다음 C 프로그램의 실행 결과는? (단, 2차원 배열의 경우 행 우선으로 메모리에 저장된다)#include <stdio.h>
int main(void)
{
int i, j, test[3][4];
for(i=0; i<3; i++)
for(j=0; j<4; j++)
test[i][3-j]=i*4+j;
printf("%d ", *(*(test+1)+5));
}
1
5
2
6
3
9
4
10
해설
출력값은 10이다.
test[i][3-j]=i*4+j는 각 행을 거꾸로 채우므로 배열은 행 0: 3 2 1 0, 행 1: 7 6 5 4, 행 2: 11 10 9 8이 된다.
*(test+1)은 행 1의 시작 주소이고 여기에 5를 더하면, 행 우선 저장에서 선형 위치 1×4+5 = 9인 test[2][1]을 가리킨다. 그 값은 10이다.
- 9는 값이 아니라 선형 위치를 그대로 답한 것이다.
- 6은 행 1 안의 test[1][1] 값으로, 오프셋 5가 다음 행으로 넘어간다는 점을 놓친 것이다.
- 5도 행 1 안의 test[1][2] 값으로 같은 착오다.
오류나 개정된 내용이 보이면 알려주세요