[CS50] 배열 - 문자열과 배열

TIL

문자열은 배열이다

지금까지 문자열을 저장하기 위해 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
'TIL' 카테고리의 다른 글
  • [CS50] 명령행 인자
  • [CS50] 배열 - 문자열의 활용
  • [CS50] 배열
  • [CS50] 디버깅
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    함수 타입
    트러블 슈팅
    Spa
    타입 좁히기
    Next.js
    클래스
    App Router
    인터페이스
    바닐라 자바스크립트
    C
    앱 라우터
    typescript
    Pages Router
    algorithm
    페이지 라우터
    memory
    emotion diary
    알고리즘
    ai 감성 일기장
    javascript
    자료구조
    useState
    제네릭
    문자열
    cs50
    generic
    react
    CS
    배열
    Trouble Shooting
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[CS50] 배열 - 문자열과 배열
상단으로

티스토리툴바