본문 바로가기
배운 것들 메모/따라 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 4.3 문자열이 메모리에 저장되는 구조

by 야속한 낭만 2024. 8. 8.

https://en.wikipedia.org/wiki/String_%28computer_science%29
string과 character의 차이

 

 

문자의 배열

문자열의 끝이 어딘지를 표현하기 위해서 메모리를 한 칸 더 쓴다.

INDEX 는 0부터 시작함.

일반적으로 컴퓨터가 숫자를 셀 때

0부터 9를 의미한다.

 

int int_arr[10] 는 10개의 공간 4*10 40byte 임.

char str1[10] 

 

직관적으로 봤을 때는 10개의 문자가 들어갈 것 같지만 문자열을 구분하기 위해, 마지막에는 널 문자(null character)가 들어가게 되어있어서 결국 최대 9글자 밖에 못 들어간다.

  • [ ] ← 하나의 공간이라고 생각하자. 여기서 null은 \0 으로 표현한다.

ex) [H] [E] [L] [L] [O] [\0]

 

Q. 그러면 char str1 [10]은 10칸인데 pritnf가 %s (string)을 출력할 때 10칸을 다 출력해줘야 하는 것은 아닌가? 즉, 바꿔 말하면 HEELO\0 남은 [] 칸까지 출력해주는 건 아닌가?

A. char 문자열은 backslash 0 null charter을 만나게 되면 더 이상 출력을 하지 않는다.

-> 여기에 관련된 적당한 연습문제가 있다. 연습문제 클릭

 

 

정말 맞는 지 증명을 해보자.

 

#include <stdio.h>

int main()
{
char str3[20] = "Hello, \\0Wolrd";

printf ("%s\\n", str3);

return 0;
}

 

 

Hello, 만 출력된 모습

 

 

그래도 이해가 안된다면 코딩도장 , string 번 정독 해보도록 하자.

 

 

출처:  홍정모의 따라배우는 C언어

강의 외의 추가된 것들은 책, 인터넷 조사해서 얻었음