空指针
来源:互联网 发布:excellentexport.js 编辑:程序博客网 时间:2024/04/28 09:39
什么是空指针:
《c++的设计和演化》中有这么一段描述空指针:
一个能求出0值的常量表达式被转换为一个指针,通常称为空指针。这个值产生的指针保证能与任何对象或函数指针相区分。
但AMR进一步警告说:空指针不一定用与整数0同样的二进制模式表示。
我的理解是这意味0能表示空指针,但反过来则不成立,即空指针不一定要是0,比如用 (2-2), ~-1。
(演化中进一步又说实际上用它们给指针赋值却是个类型错误,但我用codelite编译是通过的。可能现在的编译器已经按照标准实现了)
空指针怎么定义:
又在c中可以这样定义空指针
#define NULL (void*)0
但这样在c++中却不行,因为c++不允许把void*赋值给其他类型指针。
Bjarne进一步写到他自己的做法就是简单的用0来表示空指针。但无论如何,这样都会遇到下面的问题:
考虑
void f(char*)
void g() {f(0);} //calls f(char*)
现在加上另一个
f(int)就会改变g()的行为。
void g() { f(0);} //calls f(int)
这个又能怎么办呢?Bjarne是这样说的:“我的一个朋友认识到:‘如果0就是他们最糟糕的问题,那么他们太幸运了’”
呵呵。。。
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针
- 空指针 空指针常量
- 空指针,通用指针
- eclipse备忘:版本/CVS/插件安装/启动参数/代码风格
- PetShop4 架构解析
- Eclipse CDT 调试故障解决:Can't find resource for bundle java.util.PropertyResourceBundle
- Ubuntu Server安装全过程
- 3.3.3 C# 中的函数式列表
- 空指针
- [转载] Android 的區隔 GPL 感染機制
- CFile读写文件 实现复制文件功能
- Java判断文件夹是否存在,不存在就创建
- 2:win7 iis7
- 字符串数组和字符串指针(有关于指针的思考)
- 未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll
- 笑话!!!!!!!!!!!!!!!!
- 淘宝电面