뚜당탕탕
[C언어] char 문자열 - 널 종료 문자 ( NULL / 0 / '\0' ) 본문
컴퓨터는 문자열을 저장할 때
문자들의 배열, 즉 char 배열에 문자열을 저장한다
( * 실제로 메모리에 저장되는 값은 각 문자에 해당하는 아스키 값이 저장된다 )
그래서 char 배열에서 문자열을 출력할 때
char str[4] = 'char';
이라면 메모리에는 'c' 'h' 'a' 'r' 처럼 하나의 문자로 저장되어 있다
c | h | a | r |
처럼 말이다
그래서 문자열을 메모리에서 출력할 때
한 글자씩 출력하여, 그것을 변수에 담아 사용하기엔 번거롭기 때문에
문자열의 길이를 이용하여 한번에 출력하여 사용할 수 있다.
그러나 이 또한 번거롭기 때문에
문자열의 끝에 '종료 문자'인 '널(NULL)' 을 넣어주면 더 편리하다.
문자열의 길이를 몰라도! 컴퓨터는 문자열의 끝을 쉽게 파악할 수 있기 때문이다.
char str[5] = 'char';
'c' | 'h' | 'a' | 'r' | NULL 0 '\0' |
이 종료 문자는 아스키 값이 0 이고, '\0' 라고도 표현한다. ( 절대 '/0' 이 아니다. 슬러시가 아니라 역슬러시 이다. )
절대 문자 '0' 은 아스키 값이 48 이므로 완전히 다르다.
이 종료문자 NULL 또는 0 ('\0') 은 문자열이 끝났음을 알려주는 의미가 된다.
따라서, 컴퓨터는 종료문자 NULL 이 나올 떄까지 출력하기만 하면 된다.
그리고,
문자열이 끝나는 마지막 공간에 이 NULL 종료문자를 넣어주어야 하기에
문자열이 4글자 라면, 배열은 5칸이 필요하게 된다.
한글이 갑자기 왜 깨졌는지는 모르겠지만
0, 0, 0
48
로 결과가 나온 것을 확인할 수 있다
'P' | 's' | 'i' | NULL 0 '\0' |
메모리에는 이렇게 저장되어 있고, NULL 문자가 나올 때까지 출력한다.
'공부 기록용 > C Language' 카테고리의 다른 글
[ Dev-c++ ] 설치 및 실행 (0) | 2021.05.18 |
---|---|
반복문 - for (0) | 2021.01.15 |
생각해보기 (0) | 2021.01.15 |
독학하기) [C언어] 06 조건문 - if, 관계 연산자 (0) | 2021.01.13 |
Visual Studio Code) 05 입력 함수 [scanf] (0) | 2021.01.13 |