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

面试题 相关文章推荐
Weblogc domain问题
Jan 27 面试题
介绍一下Java的安全机制
Jun 28 面试题
JPA面试常见问题
Nov 14 面试题
JAVA中的关键字有什么特点
Mar 07 面试题
什么是serialVersionUID
Mar 04 面试题
写出一个方法实现冒泡排序
Jul 08 面试题
广州迈达威.net面试题目
Mar 10 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
Aug 25 面试题
介绍一下Linux文件的记录形式
Sep 29 面试题
几道Web/Ajax的面试题
Nov 05 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
Aug 18 面试题
Java中的异常处理机制的简单原理和应用
Apr 27 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
PHP5中MVC结构学习
2006/10/09 PHP
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
javascript时区函数介绍
2012/09/14 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python实现趣味图片字符化
2019/04/30 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python datetime模块使用方法小结
2020/06/18 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
中专自荐信
2013/10/13 职场文书
酒店员工培训方案
2014/06/02 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
会计试用期自我评价
2015/03/10 职场文书
我的长征观后感
2015/06/09 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js