[CS50] 문자열 출력

제리·2022년 6월 12일
0

CS50

목록 보기
4/13

문자열 출력

지난시간에 이어 문자열을 하나씩 출력하려면 *s(s가 가르키는값) 을 이용해 접근하여 출력한다.

#include <stdio.h>

int main(void)
{
	char *s = "EMMA"; // 포인터 s에 문자열 저장
    printf("%c\n", *s); // E
    printf("%c\n", *(s+1)); // M
    printf("%c\n", *(s+2)); // M
    printf("%c\n", *(s+3)); // A
}

s라는 포인터의 값에는 문자열 "E"의 첫번째 값의 메모리 주소만 저장된다.

s 포인터의 값 = 문자배열의 첫번째 값에 해당하는 메모리 주소
포인터의 값은 %p 라는 형식지정자를 이용해 출력이 가능하다.
ex) printf("%p", s)
출력값 : 0x12345678

그런데 왜 %s 형식지정자를 이용하면 문자열 전체가 출력될까?

printf("%s\n",s) // "EMMA"

printf의 형식지정자가 해주는것이다.
printf에서 %s를 사용해서 출력을 요청하면 그 주소로가서 첫글자만 출력하는게 아니라 다음문자도 계속 출력하게 해준다. (널 종단문자까지) \0

쉽게말하면 그냥 printf 안에 %s라는 애가 널 종단문자까지 출력하도록 코딩되어있는듯

profile
iOS 준비중

0개의 댓글