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

面试题 相关文章推荐
一道SQL存储过程面试题
Oct 07 面试题
接口可以包含哪些成员
Sep 30 面试题
abstract是什么意思
Feb 12 面试题
Windows和Linux动态库应用异同
Jul 28 面试题
恒华伟业笔试面试题
Feb 26 面试题
AJax面试题
Nov 25 面试题
重写子类方法时,抛出异常的书写注意事项
Oct 17 面试题
如何通过jdbc调用存储过程
Apr 19 面试题
Jdbc数据访问技术面试题
Mar 30 面试题
介绍一下Ruby的多线程处理
Feb 01 面试题
解释一下ruby中的特殊方法与特殊类
Feb 26 面试题
如何理解transaction事务的概念
May 27 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
PHP学习之PHP变量
2006/10/09 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
浅谈Python的文件类型
2016/05/30 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Python如何输出整数
2020/06/07 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
2014年五四青年节活动方案
2014/03/29 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
老乡聚会通知
2015/04/23 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python