정보처리기사 실기 - 2023년 3회 C언어 기출 풀이(포인터 & 문자열 문제)

Alchemist·2025년 9월 20일

정보처리기사

목록 보기
29/114

✨ 문제

다음 C언어 코드의 출력 결과를 작성하시오.

#include <stdio.h>
 
int main() {
    char* p = "KOREA";
    printf("%s\n", p);
    printf("%s\n", p+1);
    printf("%c\n", *p);
    printf("%c\n", *(p+3));
    printf("%c\n", *p+4);
}

🎯 출제 의도

  • 문자열에서 포인터 연산(p+1, *(p+3), *p+4)의 의미 이해
  • %s%c 출력 서식 차이 확인
  • 포인터와 배열 인덱스의 관계 학습

📘 개념 정리

1. 문자열

char* p = "KOREA";

메모리에 저장:

p[0] = 'K'
p[1] = 'O'
p[2] = 'R'
p[3] = 'E'
p[4] = 'A'
p[5] = '\0'

2. 출력문 해석

  1. printf("%s\n", p);
    → 문자열 전체 "KOREA"

  2. printf("%s\n", p+1);
    p+1"OREA"의 시작 주소 → "OREA"

3 printf("%c\n", *p);
*p는 첫 글자 'K'

  1. printf("%c\n", *(p+3));
    p+3p[3] = 'E''E'

  2. printf("%c\n", *p+4);

  • *p'K' (아스키 75)
  • 'K' + 4 = 아스키 79 = 'O'
  • 따라서 'O'

✅ 최종 출력 결과

KOREA
OREA
K
E
O

💡 정리

이 문제에서 꼭 알아야 할 개념:

  • %s는 문자열(널 문자까지) 출력, %c는 문자 하나 출력
  • p+1 → 배열에서 한 칸 뒤 문자열 출력 ("OREA")
  • *(p+3) → 포인터 3칸 이동 후 역참조 ('E')
  • *p+4 → 첫 문자 'K'의 아스키 코드에 +4 연산 후 문자 변환 ('O')
profile
html_programming_language

0개의 댓글