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


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

面试题 相关文章推荐
联强国际笔试题面试题
Jul 10 面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
Dec 05 面试题
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
Jul 16 面试题
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
Feb 15 面试题
一组SQL面试题
Feb 15 面试题
简述索引存取方法的作用和建立索引的原则
Mar 26 面试题
广州盈通面试题
Dec 05 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
Jan 21 面试题
网络体系结构及协议的定义
Mar 13 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
Jun 27 面试题
简单叙述一下MYSQL的优化
May 09 面试题
一道输出判断型Java面试题
Oct 01 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
单链表反转python实现代码示例
2018/02/08 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python3.7添加dlib模块的方法
2020/07/01 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
JAVA程序员面试题
2012/10/03 面试题
学习十八大报告感言
2014/02/28 职场文书
学习决心书范文
2014/03/11 职场文书
主持人演讲稿
2014/05/13 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
Python Matplotlib库实现画局部图
2021/11/17 Python
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js