카테고리 없음

[C언어] 출력에 대한 이해

codecodekode 2024. 10. 16. 15:05

10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오. 

포인터 p는 문자열 "KOREA"를 가리킵니다.

변수 p의 초기화

  • char* p = "KOREA";
    • p는 문자열 "KOREA"의 첫 번째 문자인 'K'를 가리킵니다.
    • 이 문자열은 null 문자(\0)로 끝납니다.

출력 분석

  1. printf("%s \n", p);:
    • %s는 문자열을 출력합니다.
    • p는 "KOREA" 문자열의 첫 번째 문자를 가리키므로, 전체 문자열 "KOREA"가 출력됩니다.
    • 출력: KOREA
  2. printf("%s \n", p+1);:
    • p+1은 "KOREA"에서 두 번째 문자인 'O'를 가리킵니다.
    • %s는 해당 주소부터 null 문자까지의 문자열을 출력하므로, "OREA"가 출력됩니다.
    • 출력: OREA
  3. 세 번째 출력: *(p+3)
    • *(p+3)은 포인터 p가 가리키는 주소에서 세 칸 이동한 위치의 값을 가져옵니다.
    • 즉, p+3은 문자열 "KOREA"에서 네 번째 문자 'E'를 가리킵니다.
    • 따라서, E가 출력됩니다.
  4. 네 번째 출력: *p+4
      • *p는 포인터 p가 가리키는 첫 번째 문자를 의미합니다. 즉, *p는 "KOREA" 문자열에서 첫 번째 문자인 'K'입니다.
      • 그런데 *p + 4는 'K'라는 문자 값에 정수 4를 더한 값을 의미합니다.
      • 문자 'K'의 ASCII 값은 75입니다. 그리고,ASCII 값 79는 문자 'O'에 해당합니다.
       
  5. cf) 네 번째 출력: *(p+4)
    *(p+4)는 포인터 p에서 네 칸 이동한 위치의 값을 가져옵니다.
    p+4는 문자열 "KOREA"에서 다섯 번째 문자 'A'를 가리킵니다.