怎样在程序里获得一个空指针


Posted in 面试题 onJanuary 24, 2015
根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说, 在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:
char *p = 0;
if(p != 0)
然而, 传入函数的参数不一定被当作指针环境, 因而编译器可能不能识别未加修饰的0 “表示” 指针。在函数调用的上下文中生成空指针需要明确的类型转换,强制把0 看作指针。例如, Unix 系统调用execl 接受变长的以空指针结束的字符指针参数。它应该如下正确调用:
execl(“/bin/sh”, “sh”, “-c”, “date”, (char *)0);
如果省略最后一个参数的(char *) 转换, 则编译器无从知道这是一个空指针,从而当作一个0 传入。(注意很多Unix 手册在这个例子上都弄错了。
如果范围内有函数原型, 则参数传递变为“赋值上下文”, 从而可以安全省略多数类型转换, 因为原型告知编译器需要指针, 使之把未加修饰的0 正确转换为适当的指针。函数原型不能为变长参数列表中的可变参数提供类型。在函数调用时对所有的空指针进行类型转换可能是预防可变参数和无原型函数出问题的最安全的办法。

Tags in this post...

面试题 相关文章推荐
方法名是否可以与构造器的名字相同
Jun 04 面试题
什么是java序列化,如何实现java序列化
Nov 14 面试题
怎样声明子类
Jul 02 面试题
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
Aug 15 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
Apr 28 面试题
北京泡泡网网络有限公司.net面试题
Jul 17 面试题
关于递归的一道.NET面试题
May 12 面试题
.NET初级开发工程师面试题(包括Javascript)
Aug 22 面试题
南京某公司笔试题
Jan 27 面试题
linux面试题参考答案(11)
May 01 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
May 24 面试题
解释下面关于J2EE的名词
Nov 15 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php实现二进制和文本相互转换的方法
2015/04/18 PHP
DOM精简教程
2006/10/03 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
vue实现分页加载效果
2019/12/24 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
Nest.js散列与加密实例详解
2021/02/24 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
Python代码实现KNN算法
2017/12/20 Python
python装饰器深入学习
2018/04/06 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
python语言中有算法吗
2020/06/16 Python
HTTP状态码详解
2021/03/18 杂记
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
医药类个人求职的自我评价
2014/02/12 职场文书
财务简历的自我评价
2014/03/05 职场文书
旷课检讨书范文
2014/10/30 职场文书
毕业生党员个人总结
2015/02/14 职场文书
教师节主题班会教案
2015/08/17 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
从原生JavaScript到React深入理解
2022/07/23 Javascript