다음 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 출력 서식 차이 확인char* p = "KOREA";
메모리에 저장:
p[0] = 'K'
p[1] = 'O'
p[2] = 'R'
p[3] = 'E'
p[4] = 'A'
p[5] = '\0'
printf("%s\n", p);
→ 문자열 전체 "KOREA"
printf("%s\n", p+1);
→ p+1은 "OREA"의 시작 주소 → "OREA"
3 printf("%c\n", *p);
→ *p는 첫 글자 'K'
printf("%c\n", *(p+3));
→ p+3은 p[3] = 'E' → 'E'
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')