다음 C 언어 프로그램의 실행결과로 옳은 것은?#include <… | [법원직 9급 전산·사서 컴퓨터일반] 26년 1회차 기출문제 상세 페이지
1[법원직 9급 전산·사서 컴퓨터일반] 26년 1회차
다음 C 언어 프로그램의 실행결과로 옳은 것은?
| #include <stdio.h> int main() { char a[] = "KOREA"; char *p = &a[1]; *(p+3) = 'D'; p++; printf("%s", p); } |
1
READ
2
KORED
3
RED
4
KOREA
해설
문자열이 KORED로 바뀐 뒤 a[2]부터 출력되므로 결과는 RED이다.
p = &a[1] 이므로 p는 'O'를 가리킨다.
*(p+3) = 'D' 는 a[4]를 바꾸어 a가 KORED가 된다.
p++ 로 p는 a[2]인 'R'을 가리킨다.
%s는 그 위치부터 널 문자 전까지 출력한다.
- READ: 'D'는 뒤에 덧붙는 것이 아니라 a[4]의 'A'를 덮어쓰므로 나올 수 없다.
- KORED: a[0]부터 출력할 때의 값인데, p는 a[2]를 가리킨다.
- KOREA: 원래 문자열로, 수정과 포인터 이동이 모두 빠진 값이다.
오류나 개정된 내용이 보이면 알려주세요