NULL,'\0',0,'/0'和"0"的区别
最近发现对于NULL,’\0’,0,’/0’和”0”的区别有点混淆了。所以在查阅资料之后,将笔记记录在此处,免得下次忘记了可以看看。
NULL
NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内容那个:
NULL 在c中用(void*)0表示,在c++中用0表示。
‘\0’和’0’
‘\0’表示字符串结束,它在ASCII中的值为0(数值0,非字符‘0’。所以在数值上NULL, ‘\0’,0是一样的,都是0,但’0’就不同了,在ASCII码中编码为48,所以字符0和上述三个值不同。
在内存中
NULL
和'\0'
和'0'
都是一个8位的char类型,NULL 和’\0’ 值一样,都是0,以数字方式读取就是0,以字符串读取时就是’\0’或者null(和编译器有关)。而
'0'
在内存存储着48
,以字符读取就是'0'
,以数字读取就是48
,至于0
,可能是char ,int ,float,double等类型,但是值和NULL
和'\0'
一样,都是0
。
‘/0’和’\0’
我在写C代码时,经常把’\0’写成’/0’。其实这两者之间差别很大的。因为’/0’表示的是两个字符了,一个是’/‘, 另一个’0’。
而’\0’表示的字符串结束,值为0。
“0”
“0”表示的是字符串,即在存储中存储了两个内容,一个是’0’(即字符0),另一个是字符串结束符’\0’(也即数字0)。
举例
为了说明情况,下面列举了几个例子。