본문 바로가기

Programming/온라인 교육

[CS50] 문자열

반응형

문자열

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

String str = "COMPUTER";

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

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

변수 str은 결국 이러한 문자열을 가리키는 포인터가 된다.

 

#include <stdio.h>

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

결과)
COMPUTER

char 포인터를 이용해 문자열을 출력할 수 있다.

 

문자열 비교

#include <stdio.h>

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

위 코드를 실행하면, s라는 포인터의 값, 즉 “EMMA”라는 문자열의 가장 첫 값인 “E”에 해당하는 메모리 주소를 출력한다.

 

printf("%p\n", &s[0]);
printf("%p\n", &s[1]);
printf("%p\n", &s[2]);
printf("%p\n", &s[3]);

결과)
0x55652d87d004
0x55652d87d005
0x55652d87d006
0x55652d87d007

위 코드는 "EMMA"라는 문자열의 문자 하나 하나의 주소값을 출력한다. 

 

문자열을 비교할 때는 문자열이 저장된 변수를 바로 비교하게 되면 그 변수가 저장되어 있는 주소가 다르기 때문에 다르다는 결과가 나온다.

 

#include <stdio.h>

int main()
{
    char *s = "s";
    char *t = "t";

    if (s == t)
    {
        printf("Same\n");
    }
    else
    {
        printf("Different\n");
    }
}

결과)
Different

 

 

출처

https://www.boostcourse.org/cs112/lecture/119032/?isDesc=false 

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org

 

반응형