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


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

面试题 相关文章推荐
List、Map、Set三个接口,存取元素时,各有什么特点?
Sep 27 面试题
外企C语言笔试题
Nov 10 面试题
华为C++笔试题
Aug 05 面试题
static函数与普通函数有什么区别
Dec 25 面试题
求∏的近似值,直到最后一项的绝对值小于指定的数
Feb 12 面试题
什么叫做SQL注入,如何防止
Oct 04 面试题
linux系统都有哪些运行级别
Mar 26 面试题
如何开启linux的ssh服务
Feb 14 面试题
Linux操作面试题
May 16 面试题
英智兴达软件测试笔试题
Oct 12 面试题
Python里面如何实现tuple和list的转换
Jun 13 面试题
DTD的含义以及作用
Jan 26 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
PHP实现懒加载的方法
2015/03/07 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
php微信公众号开发之简答题
2018/10/20 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
python实现文件快照加密保护的方法
2015/06/30 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python 修改本地网络配置的方法
2019/08/14 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
python 数据类型强制转换的总结
2021/01/25 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
大学生职业规划论文
2014/01/11 职场文书
战友聚会邀请函
2014/01/18 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
人事局接收函
2015/01/31 职场文书