모두CBT

다음 C 프로그램의 실행 결과는?#include <stdio.h&… | [7급 국가직 자료구조론] 26년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 26년 1회차
다음 C 프로그램의 실행 결과는?
#include <stdio.h>

typedef struct {
int id;
char name[10];
} Student;

void func(Student *dest, Student *src){
dest = src;
}

int main() {
Student st_a = {1, "AAA"}, st_b = {2, "BBB"};
Student *st_arr[3] = {&st_a, &st_b, &st_b};

func(st_arr[2], st_arr[0]);
st_arr[2]->name[0] = 'X';

for(int i = 0; i < 3; i++)
printf("%s ", st_arr[i]->name);

return 0;
}
1
AAA XBB XBB
2
AAA BBB XBB
3
AAA BBB XAA
4
XAA BBB XAA
해설

출력은 AAA XBB XBB이다.

func는 포인터 값을 값으로 전달받아 지역 변수 dest만 바꾸므로 st_arr[2]는 여전히 &st_b를 가리킨다. 따라서 st_arr[2]->name[0] = 'X'는 st_b의 이름을 XBB로 바꾸고, 같은 st_b를 가리키는 st_arr[1]도 XBB를 출력한다.

  • AAA BBB XBB는 st_arr[1]과 st_arr[2]가 같은 구조체를 가리킨다는 점을 놓친 것이다.
  • AAA BBB XAA는 func가 st_arr[2]를 &st_a로 바꾼다고 본 것인데, 포인터 자체의 값 전달이라 바뀌지 않는다.
  • XAA BBB XAA 역시 func가 호출자의 포인터를 바꾼다고 잘못 본 결과다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 26년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기