문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> typedef struct { int num; int value; } Data; int main() { Data list[4] = {{10, 15}, {20, 25}, {30, 35}, {40, 45}}; Data *ptr = &list[2]; int result = ptr[-1].value + ptr[0].num + ptr[1].value; printf("%d", result); return 0; }
정답
100
100
해설
구조체 배열에서 포인터 ptr이 list[2]를 가리킵니다.
- ptr[-1]은 list[1]을 의미하므로 ptr[-1].value = 25
- ptr[0]은 list[2]를 의미하므로 ptr[0].num = 30
- ptr[1]은 list[3]을 의미하므로 ptr[1].value = 45 따라서 result = 25 + 30 + 45 = 100입니다.