C언어에서 NULL, \0, 0 에 대해서
친구들과 얘기하다가 NULL, \0, 0 에 대해서 같은거냐 다른거냐에 대한
논쟁이 있었다.
결론부터 얘기하면 언어에 따라 다르다
C언어를 기준으로 얘기 했을 때 테스트 코드는 아래와 같다.
#include <stdio.h>
int main(void)
{
int int_n1 = 0;
char char_n1 = 0;
char char_n2 = '0';
char char_n3 = '\0';
char *char_n4 = 0;
char *char_n5 = "";
char char_n5_1[] = "";
char *char_n6 = '\0';
char *char_n7 = NULL;
printf("=================\n");
printf("int\t0\t: %d\n", int_n1);
printf("char\t0\t: %c\n", char_n1);
printf("char\t'0'\t: %c\n", char_n2);
printf("char\t'\\0'\t: %c\n", char_n3);
printf("*char\t0\t: %s\n", char_n4);
printf("*char\t\"\"\t: %s\n", char_n5);
printf("char[]\t\"\"\t:%s\n", char_n5_1);
printf("*char\t'\\0'\t: %s\n", char_n6);
printf("*char\tNULL\t: %s\n", char_n7);
return (0);
}
결과는 아래와 같다
=================
int 0 : 0
char 0 :
char '0' : 0
char '\0' :
*char 0 : (null)
*char "" :
char[] "" :
*char '\0' : (null)
*char NULL : (null)
C언어에서 변수의 값으로 0과 ‘\0’ 은 동일하고
변수의 주소값으로 0, ‘\0’, NULL은 같은 의미이다.
끝.
0 댓글