CS50 강의에서는 문자열을 저장하기 위해 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);
}
두 번째 코드에서 char *s
는 s
라는 변수가 문자를 가리키는 포인터가 되고 "EMMA"라는 문자열의 첫 번째 값을 가리키게 된다.
References
'CSE > CS 기초' 카테고리의 다른 글
[CS50] 메모리 - 메모리 교환, 스택, 힙 (0) | 2024.06.17 |
---|---|
[CS50] 메모리 - 문자열 비교, 복사, 할당과 해제 (0) | 2024.06.17 |
[CS50] 메모리 - 포인터 (0) | 2024.06.14 |
[CS50] 메모리 - 메모리 주소 (0) | 2024.06.14 |
[CS50] 알고리즘 - 재귀 (0) | 2024.06.14 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!