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


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

面试题 相关文章推荐
Ibatis中如何提高SQL Map的性能
May 11 面试题
外企C语言笔试题
Nov 10 面试题
C++面试题:关于链表和指针
Jun 05 面试题
SQL里面如何插入自动增长序列号字段
Mar 29 面试题
一套SQL笔试题
Aug 14 面试题
创建索引时需要注意的事项
May 13 面试题
诺思信科技(南京)有限公司.NET笔试题答案
Jul 06 面试题
C#中有没有运算符重载?能否使用指针?
May 05 面试题
Ajxa常见问题都有哪些
Mar 26 面试题
一套中级Java程序员笔试题
Jan 14 面试题
正隆泰信息技术有限公司上机题
Jun 14 面试题
Java程序员面试题
Jul 15 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
在php中取得image按钮传递的name值
2006/10/09 PHP
php csv操作类代码
2009/12/14 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
PyMongo安装使用笔记
2015/04/27 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
python实现吃苹果小游戏
2020/03/21 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
网络专业学生个人的自我评价
2013/12/16 职场文书
公司财务自我评价分享
2013/12/17 职场文书
保护动物的标语
2014/06/11 职场文书
承诺书样本
2014/08/30 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Flink 侧流输出源码示例解析
2022/09/23 Servers