문자열

매일 공부(ML)·2022년 3월 4일
0

CS50

목록 보기
27/37

우리는 여태껏 문자열을 저장하기 위해 CS50 라이브러리에 포함된 string 자료형을 사용하였었습니다.

아래와 같이 s에 “EMMA”라는 값을 저장한다고 생각해 봅시다.

string s = “EMMA”;

문자열은 결국 문자의 배열이고, s[0], s[1], s[2], … 와 같이 하나의 문자가 배열의 한 부분을 나타냅니다.

가장 마지막의 \0은 0으로 이루어진 바이트로, 문자열의 끝을 표시하는 약속입니다.

여기서 변수 s는 결국 이러한 문자열을 가리키는 포인터가 됩니다.

더 상세히는 문자열의 가장 첫번째 문자, 즉 주소 0x123에 있는 s[0]를 가리키게 됩니다.

실제 CS50 라이브러리를 보면 string 자료형은 아래와 같이 정의되어 있습니다.

typedef char *string

여기서 typedef는 새로운 자료형을, char *은 문자에 대한 포인터를, string은 자료형의 이름을 의미합니다.

따라서 아래 두 코드는 동일하게 동작할 것입니다.

string 자료형을 이용하여 “EMMA” 출력

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    string s = "EMMA";
    printf("%s\n", s);
}

char 포인터를 이용하여 “EMMA” 출력


#include <stdio.h>

int main(void)
{
    char *s = "EMMA";
    printf("%s\n", s);
}

2번 코드의 char *s에서 s라는 변수는 문자에 대한 포인터가 되고, “EMMA”라는 문자열의 가장 첫 번째 값을 저장하기 때문이죠

profile
성장을 도울 아카이빙 블로그

0개의 댓글