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


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

面试题 相关文章推荐
新电JAVA笔试题目
Aug 31 面试题
编写strcpy函数
Jun 24 面试题
面向对象概念面试题(.NET)
Nov 04 面试题
什么是Smart Navigation?
Jul 03 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
Jan 19 面试题
北京某科技有限公司C# .net笔试题
Sep 27 面试题
新媒传信软件测试面试题
Feb 24 面试题
GWT的应用有哪两种部署模式
Dec 21 面试题
若干个Java基础面试题
May 19 面试题
九州传奇上机题
Jul 10 面试题
国外的一些J2EE面试题一
Oct 13 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
Oct 13 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue二级路由设置方法
2018/02/09 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
最新茶叶店创业计划书
2014/01/14 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
学生检讨书怎么写
2014/10/09 职场文书
聘任通知书
2015/09/21 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技