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


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

面试题 相关文章推荐
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
super关键字的用法
Apr 10 面试题
介绍一下#error预处理
Sep 25 面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
Aug 09 面试题
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
Aug 13 面试题
如何转换一个字符串到enum值
Apr 12 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
Oct 31 面试题
linux面试题参考答案(6)
Aug 29 面试题
中科方德软件测试面试题
Apr 21 面试题
为什么需要版本控制?
Aug 08 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
Mar 30 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python操作SQLite数据库的方法详解
2017/06/16 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
教师个人的自我评价分享
2014/01/02 职场文书
实习老师离校感言
2014/02/03 职场文书
元旦晚会感言
2014/03/12 职场文书
早读课迟到检讨书
2014/09/25 职场文书
2014年个人委托书范本
2014/10/13 职场文书
幼师大班个人总结
2015/02/13 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
速龙x4-860k处理器相当于i几
2022/04/20 数码科技