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

面试题 相关文章推荐
如何提高JDBC的性能
Apr 30 面试题
大整数数相乘的问题
Jul 22 面试题
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
Aug 15 面试题
什么是数组名
May 10 面试题
New delete 与malloc free 的联系与区别
Feb 04 面试题
CLR与IL分别是什么含义
Aug 23 面试题
EJB的角色和三个对象
Dec 31 面试题
腾讯公司的一个sql题
Jan 22 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
Apr 13 面试题
Java基础知识面试题
Mar 25 面试题
UNIX文件系统分类
Nov 11 面试题
Servlet面试题库
Jul 18 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
通过修改referer下载文件的方法
2008/05/11 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
django中的数据库迁移的实现
2020/03/16 Python
Python实现仿射密码的思路详解
2020/04/23 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
美术国培研修感言
2014/02/12 职场文书
工作推荐信模板
2015/03/25 职场文书
2015年度物流工作总结
2015/04/30 职场文书
禁毒主题班会教案
2015/08/14 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python