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

面试题 相关文章推荐
你所知道的集合类都有哪些?主要方法?
Dec 31 面试题
Java中实现多态的机制是什么?
Dec 07 面试题
Java TransactionAPI (JTA) 主要包含几部分
Dec 07 面试题
编写函数,将一个3*3矩阵转置
Oct 09 面试题
空指针到底是什么
Aug 07 面试题
linux比较文件内容的命令是什么
Sep 23 面试题
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
Mar 05 面试题
介绍一下except的用法和作用
Jan 22 面试题
高级Java程序员面试题
Jun 23 面试题
Java面试笔试题大全
Nov 23 面试题
Ejb技术面试题
Apr 29 面试题
介绍一些UNIX常用简单命令
Nov 11 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
2016/06/13 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
JavaScript Prototype对象
2009/01/07 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
Vue组件开发初探
2017/02/14 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python列表与元组详解实例
2013/11/01 Python
初步讲解Python中的元组概念
2015/05/21 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
浅析使用Python操作文件
2017/07/31 Python
Python3多线程基础知识点
2019/02/19 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
副总经理任命书
2014/06/05 职场文书
授权委托书公证
2014/09/14 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
考研英语复习计划
2015/01/19 职场文书