문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int main() { int matrix[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int *base = &matrix[1][1]; int *p1 = base + 1; int *p2 = base + 5; int *p3 = base - 1; printf("%d %d %d", *p1, *p2, *p3); return 0; }
정답
7 11 5
7 11 57 11 5
해설
2차원 배열 matrix는 메모리상에 연속적으로 저장됩니다: [1,2,3,4,5,6,7,8,9,10,11,12]. base는 matrix[1]1을 가리킵니다. p1 = base + 1은 다음 요소인 7을 가리킵니다. p2 = base + 5는 5칸 뒤의 요소인 11을 가리킵니다. p3 = base - 1은 이전 요소인 5를 가리킵니다. 따라서 출력은 7 11 5입니다.