문자열의 마지막에 NULL이 존재하는 이유
컴퓨터가 처리하는 문자열의 마지막에는 항상 NULL 이 포함되어 있다.
이는 우리가 C계열 언어를 다룰 때에 배우는 기초적인 상식입니다.
C언어를 기준으로 보자면 문자열을 배열처럼 처리하기 때문에 문자열 배열은 연속된 주소값에 char 자료형의 값들이 들어있는 형태입니다.
컴퓨터에 "character" 라는 문자열이 있다고 하겠습니다. 그러면 컴퓨터는 임의의 연속된 주소값에 아래와 같이 값을 넣을것입니다.
c | h | a | r | a | c | t | e | r | NULL |
만약 여기서 NULL이 없다면 어떻게 될지 예상 해봅시다.
변수를 선언할 때 주소값이 필요한 이유와 비슷합니다. 인간은 문자를 보고 그게 어떤 문자인지 단번에 알아보고 구분할 수가 있어요. 단어를 보고서는 어 이거 character 라는 단어 구나 라고 인식하는거죠.
하지만 컴퓨터는 1과 0으로 이루어진 2진데이터들 속에서 character라는 값을 찾아내야 합니다.
이를 인간 입장에서 보면 이런 상황이랑 비슷하다는 겁니다.
asdfeuqojashrelchcharreqcharararaaclcqwkksjcharacterhauiceqjncgchhhwjchsajw,,wqoausdjkws,
위의 문장에서 character를 한번 찾아보세요.
한번에 찾기는 힘들거예요.
컴퓨터도 비슷합니다. 2진데이터들의 향연 속에서 원하는 값을 찾다 보면 어떤게 문자열의 끝인지 알수 있는 확실한 기호가 필요했던 겁니다. 여기서 만약 데이터를 잘못 읽어온다면 쓰레기값이 출력되는등 사고가 날 수도 있기 때문에 NULL 이라는 확실하게 구분 되는 녀석을 마지막에 넣어줌으로서 사고를 방지하고 "여기가 문자열이 끝나는 부분이다." 를 알 수 있게 되는거죠.
인간이 활용하기에도 좋습니다. 어떤 함수를 만들 때에 배열에서 null 이 출력될 때까지 반복문을 만들다 보면 문자열을 전부 출력할 수가 있게 되죠.
이것이 문자열의 마지막에 NULL이 존재하는 이유입니다.