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

面试题 相关文章推荐
2019年Java 最常见的 面试题
Oct 19 面试题
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
Jan 18 面试题
Android面试题及答案
Sep 04 面试题
什么是View State?
Jan 27 面试题
2019年分享net面试的经历和题目
Aug 07 面试题
什么是规则表达式
May 03 面试题
EJB面试题
Jul 28 面试题
AJAX都有哪些有点和缺点
Nov 03 面试题
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
Dec 30 面试题
如何从一个文件档案的尾端新增记录
Dec 02 面试题
Java面试题:请说出如下代码的输出结果
Apr 22 面试题
给定一个时间点,希望得到其他时间点
Nov 07 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python修改字典内key对应值的方法
2015/07/11 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Django验证码的生成与使用示例
2017/05/20 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
大班亲子运动会方案
2014/06/10 职场文书
促销活动总结模板
2014/07/01 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
债务纠纷代理词
2015/05/25 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Django框架模板用法详解
2022/06/10 Python