用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?


Posted in 面试题 onJanuary 05, 2014
当C 在表达式中要求布尔值时, 如果表达式等于0 则认为该值为假, 否则为真。换言之, 只要写出
if(expr)
无论“expr” 是任何表达式, 编译器本质上都会把它当if((expr) != 0)处理。
如果用指针p 代替“expr” 则if(p) 等价于if(p != 0)。
而这是一个比较上下文, 因此编译器可以看出0 实际上是一个空指针常数, 并使用正确的空指针值。这里没有任何欺骗; 编译器就是这样工作的, 并为、二者生成完全一样的代码。空指针的内部表达无关紧要。
布尔否操作符! 可如下描述:
!expr 本质上等价于(expr)?0:1
或等价于((expr) == 0)
从而得出结论
if(!p) 等价于if(p == 0)
类似if(p) 这样的“缩写”, 尽管完全合法, 但被一些人认为是不好的风格

Tags in this post...

面试题 相关文章推荐
PHP面试题附答案
Nov 28 面试题
Java的接口和C++的虚类的相同和不同处
Mar 27 面试题
纬创Java面试题笔试题
Oct 02 面试题
必须要使用游标的SQL语句有那些
May 07 面试题
为什么UNION ALL比UNION快
Mar 17 面试题
端口镜像是怎么实现的
Mar 25 面试题
什么叫做SQL注入,如何防止
Oct 04 面试题
局域网标准
Sep 10 面试题
AJAX应用和传统Web应用有什么不同
Aug 24 面试题
启动一个线程是用run()还是start()
Dec 25 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
Nov 27 面试题
JAVA软件工程师测试题
Jul 25 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP Directory 函数的详解
2013/03/07 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Python实现测试磁盘性能的方法
2015/03/12 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
Python SQLite3简介
2018/02/22 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python写程序统计词频的方法
2019/07/29 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
房屋公证委托书
2014/04/03 职场文书
创建青年文明号材料
2014/05/09 职场文书
副总经理任命书
2014/06/05 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书