5.1 臭名昭著的C语言空指针到底是什么?

语言定义中说明,

每一种指针类型都有一个特殊值—— “空指针” —— 它与同类型的其它所有指针值都不相同, 它“与任何对象或函数的指针值都不相等”。

也就是说,

取地址操作符& 永远也不能得到空指针,

同样对malloc() 的成功调用也不会返回空指针,

如果失败,

malloc() 的确返回空指针, 这是空指针的典型用法:表示“未分配” 或者“尚未指向任何地方” 的指针。

空指针在概念上不同于未初始化的指针。

空指针可以确保不指向任何对象或函数;

而未初始化指针则可能指向任何地方。

参见问题1.10、7.1 和7.26。

如上文所述, 每种指针类型都有一个空指针, 而不同类型的空指针的内部表示可能不尽相同。

尽管程序员不必知道内部值, 但编译器必须时刻明确需要那种空指针, 以便在需要的时候加以区分(参见问题5.2、5.5 和5.6)。

永不止步步 发表于01-14 10:06 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号