문자열(string) 자료형의 데이터 == 문자(char) 자료형의 데이터들의 배열
- s는 문자의 배열이기 때문에 메모리 상에 아래 그림과 같이 저장되고, 인덱스로 각 문자에 접근할 수 있음
- 널 종단 문자(null-terminator): 문자열의 끝을 나타내는 문자로, '\0'라고 정의함
- 널 종단은 문자열에게 문자열이 끝났고 더 이상의 문자가 남아있지 않다고 말하는 문자
여러 이름이 포함된 names라는 문자열이 선언된 경우
#include <cs50.h>
#include <stdio.h>
int main(void)
{
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라는 문자열 형식의 배열에 네 개의 이름이 저장되어 있음(EMMA, RODRIGO, BRAIN, DAVID)
- 첫 번째 printf와 두 번째 printf의 결과는 같음 → EMMA
- EMMA의 이름은 string이고 string은 문자들의 배열이기 때문에 char로도 나타낼 수 있음
첫 번째 printf : names 배열의 첫 번째 인덱스의 값, 즉 "EMMA"를 출력
두 번째 printf
- char를 쓰기 때문에 형식지정자 %s가 아닌 %c를 사용. 여기서 출력하는 것은 문자열이 아닌 문자이고, 2차원 배열이 생김
- 각 문자의 주소를 대괄호를 사용해서 나타낼 수 있음!
- 첫 번째 대괄호는 어떤 이름인지를 찾고 두 번째 대괄호는 그 이름의 몇 번째 글자인지를 찾음
- 첫 번째 names[0]dms names의 첫 번째 인덱스의 값 EMMA를 가리킴
- 두 번째 [0],[1],[2],[3]은 이름을 문자들의 배열로 봄 그중 0번째 문자(E), 1번째 문자(M), 2번째 문자(M), 3번째 문자(A)
- 그래서 names[0][1]은 names 배열에서 첫 번째 인덱스 값, 즉 "EMMA"라는 문자열에서, 그 두 번째 값, 즉'M'이라는 문자를 의미함
https://www.boostcourse.org/cs112/joinLectures/41307
'cs > CS50' 카테고리의 다른 글
3: 배열-6(명령행 인자:command-line arguments) (0) | 2021.11.28 |
---|---|
3: 배열-5(문자열의 활용) (0) | 2021.11.28 |
3: 배열-3(메모리와 배열:전역변수) (0) | 2021.11.25 |
3: 배열-2(버그와 디버그) (0) | 2021.11.25 |
3: 배열-1(컴파일링) (0) | 2021.11.25 |