반응형
문자열(string) 자료형의 데이터는 사실 문자(char) 자료형의 데이터들의 배열이다.
string s = "hello";와 같은 문자열 s가 정의되어 있다면, s는 문자의 배열이기 때문에 메모리상에 다음과 같이 저장된다.
h | e | l | l | o | \0 |
s[0] | s[1] | s[2] | s[3] | s[4] | s[5] |
장 끝의 ‘\0’은 문자열의 끝을 나타내는 NULL 종단 문자이다.
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에서는 names의 첫번째 인덱스의 값, 즉 “EMMA”를 출력한다.
두 번째 printf에서는 형식 지정자가 %s가 아닌 %c로 설정되어 있음을 확인할 수 있다.
따라서 출력하는 것은 문자열이 아닌 문자이다.
여기서는 각 이름의 두번째 문자를 출력한다.
이는 names[0][1]과 같이 2차원 배열을 통해 접근할 수 있다.
다시 말해 names[0][1]는 names의 첫 번째 값, 즉 “EMMA”라는 문자열에서, 그 두번째 값, 즉 ‘M’ 이라는 문자를 의미한다.
아래 그림에서 names가 실제 메모리상에 저장된 예시와 해당하는 인덱스를 확인할 수 있다.
출처
https://www.boostcourse.org/cs112/lecture/119016/?isDesc=false
반응형
'Programming > 온라인 교육' 카테고리의 다른 글
[CS50] 메모리 (0) | 2021.12.06 |
---|---|
[CS50] 알고리즘 (0) | 2021.12.03 |
[CS50] 컴파일링 (0) | 2021.12.02 |
[CS50] C언어 (0) | 2021.11.30 |
[CS50 2019] 2진법, 정보의 표현 (0) | 2021.11.28 |