정보처리기사 실기C언어C 구조체 포인터난이도 3MCQ

정보처리기사 실기 C 구조체 포인터 기출문제 #3894

문제

다음 C 코드의 출력 결과는?

C
#include <stdio.h> struct dat { int x; int y; }; int main() { struct dat a[] = {{1, 2}, {3, 4}, {5, 6}}; struct dat* ptr = a; struct dat** pptr = &ptr; (*pptr)[1] = (*pptr)[2]; printf("%d 그리고 %d", a[1].x, a[1].y); return 0; }

① 3 그리고 4 ② 5 그리고 6 ③ 1 그리고 2 ④ 5 그리고 4

정답

2

해설

정답: 2. (*pptr)[1] = (*pptr)[2]는 a[2]의 구조체 값을 a[1]에 복사하므로 a[1]은 {5, 6}이 된다.

오답 풀이

  • 1번: 대입 전 a[1]의 값이다.
  • 2번: a[2]가 a[1]로 복사된 결과이다.
  • 3번: a[0]의 값이다.
  • 4번: x만 복사된다고 잘못 본 결과이다.

보충 개념 C에서 구조체 대입은 멤버 값을 통째로 복사한다. 포인터 배열 접근식 (*pptr)[i]는 ptr이 가리키는 배열의 i번째 원소를 의미한다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] C 구조체 포인터 C언어 기출 #3894 | 문어CBT