C 언어 - NULL

컴퓨터/C

728x90
반응형

값은 비어있다 또는 존재하지 않는다.

다양한 프로그래밍 언어를 배우면 NULL, null 등을 많이 보게 됩니다. NULL은 사전에서 찾아보면 아무 가치가 없는이라는 뜻을 가지고 있습니다. 그리고 프로그래밍에서는 그 값은 없다, 비어있다의 의미로 쓰이게 됩니다.

C언에서는 이렇게 값이 비어있다는 표현을 하기 위해 크게 NULL과 NUL(\0)으로 구분하여 사용하고 있습니다. 본 포스트에서는 그 차이를 한번 알아보도록 하겠습니다.

 

NULL

C언어 소스코드를 보면 이 NULL을 자주 접하게될 것입니다.

주로 포인터에서 많이 볼수 있습니다. 여기에 위처럼 의미를 부여하면 다음과 같습니다.

int* p = NULL

포인터 변수 p안은 비어있다(메모리 주소가 존재하지 않는다)

동적 메모리 할당을 하는 것도 이와 같은 맥락입니다.

처음 포인터 변수를 선언하면 그 포인터 변수는 어떠한 메모리 주소도 저장되지 않는 NULL값입니다.

동적 메모리 할당과 동시에 주소를 부여받게 됩니다. 

free함수를 이용하여 동적 메모리 할당을 해제하면 부여받은 주소를 잃게 됩니다.

즉, 동적 메모리를 할당받은 어떠한 포인터 변수 안의 값은 비어지며 NULL값으로 표현이 됩니다.

이렇게 C언어에서 NULL값은 가리키는 메모리 주소가 없다는 표현을 하기 위해 사용됩니다.

 

NUL,\0

C언어에서 문자열을 배울 때 종종 '문자열의 마지막을 알리기 위해 문자열의 마지막은 널(null) 문자로 되어있다.'라고 말합니다. 이 의미 또한 문자열의 마지막을 구분 짓기 위함이며 아무것도 존재하지 않는 값으로 표현하기 위함입니다. 흔히 우리가 사용하는 스페이스바를 이용하는 공백이 아닌 정말 아무 의미가 없는 null로서 문자열의 끝을 알기 위해서 말이죠.

이렇게 문자열의 끝을 장식하는 널문자를 C언어 내에서 NUL 또는 \0으로 표현합니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :