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

面试题 相关文章推荐
说出ArrayList,Vector, LinkedList的存储性能和特性
Jan 04 面试题
main 函数执行以前,还会执行什么代码
Apr 17 面试题
一套C++笔试题面试题
Jun 06 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
Feb 29 面试题
铭立家具面试题
Dec 06 面试题
linux面试相关问题
Apr 28 面试题
某科技软件测试面试题
May 19 面试题
介绍一下Python中webbrowser的用法
May 07 面试题
若干个Java基础面试题
May 19 面试题
Java中的类包括什么内容?设计时要注意哪些方面
May 23 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
Unix/Linux开发面试题
Aug 16 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/12/05 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
初学Python函数的笔记整理
2015/04/07 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
继承公证书
2014/04/09 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
二婚主持词
2015/06/30 职场文书
python前后端自定义分页器
2022/04/13 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技