다음 C 프로그램의 결과로 옳은 것은?#include <stdio… | [법원직 9급 전산·사서 컴퓨터일반] 25년 1회차 기출문제 상세 페이지
1[법원직 9급 전산·사서 컴퓨터일반] 25년 1회차
다음 C 프로그램의 결과로 옳은 것은?
| #include <stdio.h> void sub(int x, int *y); int main(void) { int a = 1, b = 5; sub(a, &b); printf(“%d, %d\n”, a, b); } void sub(int x, int *y) { x = x + 2; *y = *y + x; } |
1
1, 5
2
1, 8
3
3, 5
4
3, 8
해설
프로그램의 출력은 1, 8이다.
x는 값으로 전달되어 a의 복사본이고, y는 b의 주소를 받는 포인터이다.
sub 호출 시: x = 1, y는 b를 가리킴
x = x + 2 실행: x = 3 (a는 1 그대로)
*y = *y + x 실행: b = 5 + 3 = 8
- 1, 5: 포인터를 통해 바뀐 b의 값을 반영하지 않은 결과이다.
- 3, 5: a와 b의 변화를 모두 반대로 판단한 결과이다.
- 3, 8: 값 전달인 x의 변경이 a에 반영된다고 본 결과이다.
오류나 개정된 내용이 보이면 알려주세요