문자열은 배열이다
지금까지 문자열을 저장하기 위해 string 자료형을 사용했다. '문자열'은 문자가 '나열되어 있다' 또는 '배열되어 있다'는 의미다. C에서 string은 정확히 어떻게 정의되어 있을까?
문자열(string) 자료형은 사실 문자(char) 자료형의 배열이다.
문자 배열
string s = "HI!";와 같이 문자열 s가 정의되어 있다고 가정해보자.
s는 문자의 배열이므로 메모리상에 다음과 같이 저장되며, 인덱스로 각 문자에 접근할 수 있다.

가장 끝의 \0은 널 종단 문자로, 문자열의 끝을 나타낸다. 모든 비트가 0인 1바이트를 의미한다.
2차원 배열
여러 문자열이 동시에 선언된 경우를 살펴보자.
string names[4];
names[0] = "EMMA";
names[1] = "RODRIGO";
names[2] = "BRIAN";
names[3] = "DAVID";
printf("%s\n", names[0]);
printf("%c%c%c%c\n", names[0][0], names[0][1], names[0][2], names[0][3]);
names는 문자열 배열로 네 개의 이름이 저장되어 있다.
첫 번째 printf:
printf("%s\n", names[0]);
names[0], 즉 "EMMA"를 출력한다.
두 번째 printf:
printf("%c%c%c%c\n", names[0][0], names[0][1], names[0][2], names[0][3]);
형식 지정자가 %c이므로 문자를 출력한다. names[0][1]과 같이 2차원 배열로 접근한다.
names[0][1]은 names의 첫 번째 값인 "EMMA"에서 두 번째 문자인 'M'을 의미한다.

위 그림은 names가 메모리상에 저장된 예시와 해당 인덱스를 보여준다.
'TIL' 카테고리의 다른 글
| [CS50] 명령행 인자 (0) | 2025.11.06 |
|---|---|
| [CS50] 배열 - 문자열의 활용 (0) | 2025.11.06 |
| [CS50] 배열 (0) | 2025.11.05 |
| [CS50] 디버깅 (0) | 2025.11.05 |
| [CS50] 컴파일링 (0) | 2025.11.05 |
