다음 C 프로그램을 실행했을 때 출력되는 값을 쓰시오.
#include <stdio.h>
int main(void) {
int data[] = {2, 5, 1, 4};
int *p = data + 1;
for (int i = 0; i < 3; i++) {
*(p - 1) += i;
p++;
}
printf("%d %d %d %d", data[0], data[1], data[2], data[3]);
return 0;
}모범답안
2 6 3 4
풀이와 판단 근거
p는 처음에 data[1]을 가리킨다. 반복문에서는 p가 가리키는 값 자체가 아니라 한 칸 앞의 *(p-1)을 변경한다.
i=0일 때 data[0]에는 0이 더해지고, i=1일 때 data[1]은 5에서 6으로, i=2일 때 data[2]는 1에서 3으로 변한다. data[3]은 변경되지 않으므로 최종 출력은 2 6 3 4다.
자주 틀리는 지점
- p가 가리키는 현재 원소를 수정한다고 판단
- 포인터 증가 시 배열 값도 이동한다고 생각
- i=0 반복의 대상을 누락
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.