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

배정규·2021년 1월 26일
1

cs50

목록 보기
7/14

문자열과 배열

학습 목표

  • 문자열이 C에서 정의되는 방식과 메모리에 저장되는 방식을 설명할 수 있다.

핵심 단어

  • 문자
  • 문자열

문자열(string) 자료형의 데이터는 사실 문자(char) 자료형의 데이터들의 배열이다.
string s = "HI!"; 와 같이 문자열 s가 정의되어 있다고 생각해보자.
s는 문자의 배열이기 때문에 메모리상에 아래 그림과 같이 저장되고, 인덱스로 각 문자에 접근할 수 있다.

여기서 가장 끝의 \0은 문자열의 끝을 나타내는 널 종단 문자이다.
단순히 모든 비트가 0인 1바이트를 의미한다.
그럼 아래 코드와 같이 여러 문자열이 동시에 선언된 경우를 살펴보자.

names라는 문자열 형식의 배열에 네 개의 이름이 저장되어있다.
첫 번째 printf에서는 names의 첫번째 인덱스의 값, 즉 "EMMA"를 출력한다.
두 번째 printf에서는 형식 지정자가 %s가 아닌 %c로 설정되어 있음을 확인할 수 있다.
따라서 출력하는 것은 문자열이 아닌 문자이다.
여기서는 각 이름의 두 번째 문자를 출력하고자 한다.
이는 names[0][1]과 같이 2차원 배열을 통해 접근할 수 있다.
다시 말해 names[0][1]은 names의 첫 번째 값, 즉 "EMMA"라는 문자열에서, 그 두번째 값, 즉 'M'이라는 문자를 의미한다.
아래 그림에서 names가 실제 메모리사에 저장된 예시와 해당하는 인덱스를 확인할 수 있다.

profile
Seize the day

0개의 댓글