뚜당탕탕

[C언어] char 문자열 - 널 종료 문자 ( NULL / 0 / '\0' ) 본문

공부 기록용/C Language

[C언어] char 문자열 - 널 종료 문자 ( NULL / 0 / '\0' )

뚜띠언니 2021. 2. 11. 17:55

컴퓨터는 문자열을 저장할 때

문자들의 배열, 즉 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
Comments