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码
常见ASCII码的大小规则:0-9 < A-Z < a-z。
最后附上一段代码以及运行结果
#include<cstdio>
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;
}
参考:https://blog.csdn.net/mylinx/article/details/6873253
谢谢观看!