10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.
포인터 p는 문자열 "KOREA"를 가리킵니다.
변수 p의 초기화
- char* p = "KOREA";
- p는 문자열 "KOREA"의 첫 번째 문자인 'K'를 가리킵니다.
- 이 문자열은 null 문자(\0)로 끝납니다.
출력 분석
- printf("%s \n", p);:
- %s는 문자열을 출력합니다.
- p는 "KOREA" 문자열의 첫 번째 문자를 가리키므로, 전체 문자열 "KOREA"가 출력됩니다.
- 출력: KOREA
- printf("%s \n", p+1);:
- p+1은 "KOREA"에서 두 번째 문자인 'O'를 가리킵니다.
- %s는 해당 주소부터 null 문자까지의 문자열을 출력하므로, "OREA"가 출력됩니다.
- 출력: OREA
- 세 번째 출력: *(p+3)
- *(p+3)은 포인터 p가 가리키는 주소에서 세 칸 이동한 위치의 값을 가져옵니다.
- 즉, p+3은 문자열 "KOREA"에서 네 번째 문자 'E'를 가리킵니다.
- 따라서, E가 출력됩니다.
- 네 번째 출력: *p+4
-
- *p는 포인터 p가 가리키는 첫 번째 문자를 의미합니다. 즉, *p는 "KOREA" 문자열에서 첫 번째 문자인 'K'입니다.
- 그런데 *p + 4는 'K'라는 문자 값에 정수 4를 더한 값을 의미합니다.
- 문자 'K'의 ASCII 값은 75입니다. 그리고,ASCII 값 79는 문자 'O'에 해당합니다.
-
- cf) 네 번째 출력: *(p+4)
*(p+4)는 포인터 p에서 네 칸 이동한 위치의 값을 가져옵니다.
p+4는 문자열 "KOREA"에서 다섯 번째 문자 'A'를 가리킵니다.