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


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...

面试题 相关文章推荐
C/C++程序员常见面试题二
Nov 19 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
Feb 29 面试题
经典c++面试题二
Aug 14 面试题
SQL Server提供的3种恢复模型都是什么? 有什么区别?
May 13 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述
Mar 30 面试题
如何转换一个字符串到enum值
Apr 12 面试题
Discard Protocol抛弃协议的作用是什么
Oct 10 面试题
恶意软件的定义
Nov 12 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
Oct 15 面试题
Java语言程序设计测试题判断题部分
Jan 06 面试题
线程同步的方法
Nov 23 面试题
JSF界面控制层技术
Jun 17 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
javascript some()函数用法详解
2014/11/13 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
javascript中this关键字详解
2016/12/12 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
python生成器generator用法实例分析
2015/06/04 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
中医专业职业生涯规划书范文
2014/01/04 职场文书
音乐教学随笔感言
2014/02/19 职场文书
给校长的一封建议书
2014/03/12 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
青春奉献演讲稿
2014/05/08 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers