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

面试题 相关文章推荐
xml有哪些解析技术?区别是什么
Apr 26 面试题
局部内部类是否可以访问非final变量?
Apr 20 面试题
serialVersionUID具有什么样的特征
Feb 20 面试题
写一个方法1000的阶乘
Nov 21 面试题
Android笔试题总结
Nov 29 面试题
Net Remoting把服务器端激活两种模式
Jan 22 面试题
linux面试题参考答案(10)
Oct 26 面试题
新媒传信软件测试面试题
Feb 24 面试题
Java程序开发中如何应用线程
Mar 03 面试题
如何用Java判断一个文件或目录是否存在
Nov 19 面试题
值传递还是引用传递
Feb 08 面试题
如何安装ruby on rails
Feb 09 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
js浮动图片的动态效果
2013/07/10 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
python3 map函数和filter函数详解
2019/08/26 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
5.1手机促销活动
2014/01/17 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
售房协议书
2014/08/19 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
公路施工安全责任书
2015/05/08 职场文书
2019个人工作总结
2019/06/21 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers