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

정보처리기사 실기 C 포인터 기출문제 #3905

문제

다음 C 코드의 출력 결과로 가장 적절한 것은?

C
#include <stdio.h> struct Test { int i; const char *g; }; int main() { struct Test test[] = {{1, "AB"}, {2, "DC"}, {3, "EB"}}; struct Test *p = &test[1]; printf("%s", p->g + (p->i - 1)); return 0; }

① C ② D ③ DC ④ B

정답

1

해설

정답: 1. p는 test[1]을 가리키므로 p->i는 2이고 p->g는 "DC"이다. p->g + 1은 문자열의 두 번째 문자 위치를 가리키므로 "C"가 출력된다.

오답 풀이

  • 1번: 포인터가 문자열의 두 번째 문자 위치를 가리키므로 정답이다.
  • 2번: 문자열 시작 위치에서 출력한 경우이다.
  • 3번: p->g에 포인터 이동을 적용하지 않은 결과이다.
  • 4번: 다른 구조체 원소의 문자열과 혼동한 값이다.

보충 개념 문자열 포인터에 정수를 더하면 해당 문자 위치로 포인터가 이동한다. %s는 그 위치부터 널 문자 전까지 출력한다.

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

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

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

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