다음 C 프로그램의 출력 결과는?#include <stdio.h&… | [9급 지방직 컴퓨터일반] 25년 1회차 기출문제 상세 페이지
1[9급 지방직 컴퓨터일반] 25년 1회차
다음 C 프로그램의 출력 결과는?#include <stdio.h>
int main(void) {
int x = 100, y = 200;
int* px = &x, *py = &y, *tmp;
(*px) -= 10;
(*py) += 50;
tmp = px;
px = py;
py = tmp;
(*px) += 50;
(*py) -= 10;
printf("x: %d, y: %d \n", x, y);
return 0;
}
1
x: 80, y: 300
2
x: 140, y: 240
3
x: 240, y: 140
4
x: 300, y: 80
해설
출력은 x: 80, y: 300이다.
처음 px는 x, py는 y를 가리킨다.
(*px) -= 10 → x = 90
(*py) += 50 → y = 250tmp를 이용해 포인터만 교환하므로 이후 px는 y, py는 x를 가리킨다(변수 값은 바뀌지 않음).
(*px) += 50 → y = 300
(*py) -= 10 → x = 80포인터 교환을 값 교환으로 착각하면 x와 y가 뒤바뀐 결과를 얻게 된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.