用缩写的指针比较"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...

面试题 相关文章推荐
附答案的Java面试题
Nov 19 面试题
database面试题
Mar 28 面试题
关于Assembly命名空间的三个面试题
Jul 23 面试题
西安启天科技有限公司网络工程师面试题笔试题
Jun 12 面试题
什么是三层交换,说说和路由的区别在那里
Sep 01 面试题
介绍一下linux文件系统分配策略
Nov 17 面试题
Linux Interview Questions For software testers
Jun 02 面试题
在Ajax应用中信息是如何在浏览器和服务器之间传递的
May 31 面试题
Prototype是怎么扩展DOM的
Oct 01 面试题
遇到的Mysql的面试题
Jun 29 面试题
Java面试题汇总
Dec 06 面试题
Servlet方面面试题
Sep 28 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
python判断windows隐藏文件的方法
2014/03/21 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
土木工程实习生自我鉴定
2013/09/19 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
法制演讲稿
2014/09/10 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL