정처기 실기 스터디/c언어 포인터
KOREA 문자열 출력
Atopiano
2023. 3. 31. 09:50
2020년 4, 5회 정보처리기사 8번 문제
다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
#include <stdio.h>
void main()
{
char *p = "KOREA";
printf("%s\n", p);
printf("%s\n", p+3);
printf("%c\n", *p);
printf("%c\n", *(p+3));
printf("%c\n", *p+2);
}
정답 :
KOREA
EA
K
E
M
해설(chatGPT):
이것은 포인터와 문자열 조작의 사용을 보여주는 C 프로그램입니다.
프로그램은 문자열 리터럴 "KOREA"를 가리키는 포인터 p를 정의합니다. 그런 다음 프로그램은 printf() 함수를 사용하여 포인터 p와 해당 오프셋을 기반으로 다양한 값을 인쇄합니다.
다음은 각 줄이 수행하는 작업입니다.
char *p = "KOREA";
이 줄은 문자열 리터럴 "KOREA"를 가리키는 포인터 변수 p를 선언합니다.
printf("%s\n", p);
이 줄은 "KOREA" 문자열을 콘솔에 출력합니다.
printf("%s\n", p+3);
이 줄은 네 번째 문자('E')부터 문자열을 인쇄하므로 "EA"가 인쇄됩니다.
printf("%c\n", *p);
이 줄은 %c 형식 지정자를 사용하여 문자열의 첫 번째 문자('K')를 인쇄합니다.
printf("%c\n", *(p+3));
이 줄은 포인터 p를 오프셋 3으로 역참조하여 문자열의 네 번째 문자('E')를 인쇄합니다.
printf("%c\n", *p+2);
이 줄은 문자열의 첫 번째 문자('M') 다음 두 위치에 있는 문자를 인쇄합니다. 이는 연산자 우선 순위 때문입니다. 더하기 + 연산자는 역참조 * 연산자보다 우선 순위가 높으므로 *p+2는 먼저 첫 문자('K')의 ASCII 코드에 2를 더합니다. (ASCII 코드 75를 가짐), 문자 'M'의 ASCII 코드인 77이 됩니다. 따라서 이 줄은 문자 'M'을 인쇄합니다.
이 프로그램의 예상 출력은 다음과 같습니다.
KOREA
EA
K
E
M