NULL, '\0',0 '0'的区别
来源:互联网 发布:入侵网站软件 编辑:程序博客网 时间:2024/04/30 17:49
如题,在程序中经常遇到NULL,和’\0’,常常疑惑它们是什么关系,其实它们的值是一样的,只不过表现的形式不一样:
1、NULL; NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内容那个:
#if !defined(NULL)&&defined(__NEEDS_NULL)#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif#endif
NULL 在c中用(void*)0表示,在c++中用0表示。
2、’\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
printf("%d",'0');==>48printf("%c",'0');==>0printf("%c",0);==>空(即NULL)printf("%d",0);==>0
那么0+’0’,0+’\0’分别是什么呢?
printf("%c",0+'\0');==>空(NULL) 先转换成int,然后ASCII编码相加为0,%c输出,转换成char,所以输出NULLprintf("%d",0+'\0');==>0 先转换成int,然后ASCII编码相加为0,%d输出,不用转换,输出数字0printf("%c",0+'0');==>0printf("%d",0+'0');==>48
转载自:http://blog.csdn.net/mylinx/article/details/6873253
0 0
- c++中NULL,null,"",\0的区别
- 0, \0, NULL的区别
- 0, \0, NULL的区别
- 0 \0 NULL 的区别
- 0, \0, NULL的区别
- 0, \0, NULL的区别
- 0, \0, NULL的区别
- NULL 和 0的区别
- '\0'与NULL的区别
- NULL和'\0'的区别
- NULL和0的区别
- NULL、0、nullptr的区别
- NULL和0的区别
- NULL、0、nullptr的区别?
- 0,NULL,nullptr区别
- NULL, '\0',0 '0'的区别
- NULL, '\0',0 '0'的区别
- NULL, '\0',0 '0'的区别
- JavaScript高级编程(二)-面向对象程序设计
- 英语发音纠正
- HDU ACM 11 2050 折线分割平面
- BOM编程
- 文章标题
- NULL, '\0',0 '0'的区别
- DOM编程
- 坐在马桶上看算法—快速排序
- JavaScript与html5
- C#初识
- 找球号(二)
- [LeetCode]--278. First Bad Version
- ipython notebook kernel添加
- Druid连接池简单入门配置