[C언어] NULL, 0 관련

2021. 7. 22. 09:332018년 이전 관심사/프로그램 언어

반응형

NULL 혹은 0

먼저 NULL 부터 알아보겠습니다. NULL은 헤더파일에 정의된 매크로로 null pointer constant입니다.  컴파일러에 의해 (void*)0 으로 정의되어집니다.

일반적으로 C언어에서 stdio.h 파일, C++에서 iostream 헤더파일을 include 시에 사용할 수 있습니다.  NULL은 0 주소를 의미하기 때문에 포인터 변수를 초기화 시에 사용합니다. 

예를들어 ..

char *ptr = NULL 과 char *ptr = 0 은 같은 의미라 볼 수 있습니다. 

그러나 int a = NULL 과 int a = 0 의 의미는 다릅니다.

왜냐하면 전자의 경우, NULL의 의미는 a 변수에 주소값 0 을 넣는것이고 후자는 정수 0을 a변수에 넣는다는 뜻입니다.

결론적으로 NULL은 0이랑 의미가 거의 같습니다. 포인터를 초기화 시에 0은 0 주소라는 것을 알고 있다는 가정하에 쓰기 때문에 NULL과 0의 의미를 동일하게 보는것입니다. 정수형 변수를 초기화시에 NULL을 쓰는 일은 없으니까요.

 

NULL - 0x00000000 or 0x00000000'00000000 (32 vs 64 bit) 로 표현됩니다.

 

참고 자료

https://noirstar.tistory.com/16

 

[C/C++]NULL, NUL, 0, \0 의 차이점을 알아보자.

코드를 짜다보니 NULL , NUL, 0, \0 이것들의 차이점이 문득 궁금해졌습니다. 인터넷을 뒤져보니 이미 많은분들이 이것들의 차이점에 대해 적어 놓으셨더라구요. 헷갈릴 수있는 것들이기에 자세하

noirstar.tistory.com

 

반응형