C/C++中NULL,'\0','0',0的区别

1. NULL
NULL即空指针,在C语言中用(void *) 0来表示,而在C++中则用0来表示。
NULL在stdio.h中的定义为:

#if !defined(NULL) && defined(__NEEDS_NULL)
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif

2. 字符’\0’
字符’\0’表示一个字符串的结束,它的ASCII码为0。

3. 字符’0’
字符’0’它的ASCII码为48。

4. 0
0可能是许多类型,比如char,int,double等等,无论是char类型的0(二进制8位全为0)或者是int类型的0(二进制32位全为0),它们在数值上都是0。

综上所述
在数值上,NULL,’\0’,0都一样,它们都是0,而’0’在数值上则为48。在内存中,NULL,’\0’,‘0’都是一个8位的char类型,NULL 和 ‘\0’ 值一样,都是0,以数字方式读取就是0,以字符读取时就是’\0’或者null(和编译器关)。而’0’在内存存储为48,以字符读取就是’0’,以数字读取就是48。至于0,可能是char,int,float,double等类型,但是值和NULL与’\0’一样,都是0。

下面附上一些重要的ASCII码
在这里插入图片描述
C/C++中NULL,'\0','0',0的区别_第1张图片
在这里插入图片描述
在这里插入图片描述
常见ASCII码的大小规则:0-9 < A-Z < a-z。

最后附上一段代码以及运行结果

#include
using namespace std;
int main()
{
 	printf("%d\n",NULL);
 	printf("%c\n",NULL);
 	printf("%d\n",'\0');
 	printf("%c\n",'\0');
 	printf("%d\n",0);
 	printf("%c\n",0);
 	printf("%d\n",'0');
 	printf("%c\n",'0');
 	return 0;
}

C/C++中NULL,'\0','0',0的区别_第2张图片
参考:https://blog.csdn.net/mylinx/article/details/6873253
谢谢观看!
C/C++中NULL,'\0','0',0的区别_第3张图片

你可能感兴趣的:(C/C++)