Page 304 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 304
08-1 문자열의 기본
이번 장에서는 문자열 안에 들어 있는 부분 문자열을 검색하는 알고리즘을 살펴보겠습니다.
그런데 문자열을 다루는 알고리즘을 공부하려면 문자열의 기본을 먼저 알아야 합니다. 문자
열에 대해 먼저 살펴보겠습니다.
문자열이란?
프로그램에서 문자의 ‘나열’을 나타내는 것이 문자열(string)입니다. 이때 문자의 ‘나열’은 어
떤 문자가 항상 있어야 하는 것은 아닙니다. 문자가 하나만 있어도 좋고, 비어 있어도 상관없
습니다. 빈 문자열도 문자열입니다.
문자열 리터럴
C 언어에서는 "STRING"이나 "ABC"처럼 문자의 나열을 2개의 큰따옴표(")로 묶은 것을 문자열
리터럴(string literal)이라고 합니다. 문자열 안의 문자는 메모리 공간에 연속으로 배치됩니다.
각 문자(1바이트)에 대한 비트 구성입니다.
0 0 1 0 1 0 0 1 1 'S'
"STRING"
1 0 1 0 1 0 1 0 0 'T'
2 0 1 0 1 0 0 1 0 'R'
0 1 2 3 4 5 6
S T R I N G Ø 3 0 1 0 0 1 0 0 1 'I'
6개의 문자가 나열되어 있습니다. 4 0 1 0 0 1 1 1 0 'N'
5 0 1 0 0 0 1 1 1 'G'
6 0 0 0 0 0 0 0 0 ' Ø'
[그림 8-1] 문자열 리터럴과 메모리 공간
여기에 나타낸 문자열 리터럴의 모습은 아스키 코드(ASCII) 체계를 기준으로 한 것입니다. 문자가 차지하는 비트 수는 컴
퓨터 환경에 따라 다릅니다(이 예는 8비트를 기준으로 했습니다).
위 그림에서 볼 수 있듯이 컴퓨터는 문자열 리터럴의 끝을 나타내기 위해 널 문자(null
character)를 자동으로 추가합니다. 널 문자 내부는 컴퓨터 환경이나 문자 코드에 관계없이 모
든 비트의 값이 0입니다. 실제로 문자열 리터럴 "STRING"의 내부가 어떻게 되어 있는지 실습
304 C 알고리즘