Programming/온라인 교육
[CS50] 문자열
Cafe_Caramelo
2021. 12. 6. 00:46
반응형
문자열
아래와 같이 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
반응형