C출력 결과어려움 · 30점#구조체#포인터#함수

56. 구조체의 값 전달과 포인터 전달

다음 C 프로그램의 실행 결과를 쓰시오.

1#include <stdio.h>
2
3struct Point {
4 int x;
5 int y;
6};
7
8void moveVal(struct Point p, int d) {
9 p.x += d;
10 p.y += d;
11}
12
13void movePtr(struct Point *p, int d) {
14 p->x += d;
15 p->y -= d;
16}
17
18struct Point mirror(struct Point p) {
19 int t = p.x;
20 p.x = p.y;
21 p.y = t;
22 return p;
23}
24
25int main() {
26 struct Point a = {3, 8};
27 struct Point b = a;
28 moveVal(a, 5);
29 movePtr(&b, 2);
30 printf("%d %d / %d %d\n", a.x, a.y, b.x, b.y);
31 struct Point arr[2] = {a, b};
32 struct Point *q = arr;
33 for (int i = 0; i < 2; i++) {
34 movePtr(q + i, (i + 1) * 3);
35 }
36 a = mirror(arr[1]);
37 printf("%d %d / %d %d / %d\n", arr[0].x, arr[0].y, a.x, a.y, b.x);
38 return 0;
39}

해설을 먼저 보면 이후 정답 시 점수가 50%만 반영됩니다.