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


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

面试题 相关文章推荐
面向对象编程OOP的优点
Jan 22 面试题
List、Map、Set三个接口,存取元素时,各有什么特点?
Sep 27 面试题
JSF面试题:Jsf中导航的标签是什么
Apr 20 面试题
介绍一下游标
Jan 10 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
Aug 25 面试题
介绍一下Linux文件的记录形式
Apr 18 面试题
Shell如何接收变量输入
Aug 06 面试题
介绍一下Linux中的链接
Jun 05 面试题
Linux如何修改文件和文件夹的权限
Jun 27 面试题
某科技软件测试面试题
May 19 面试题
EJB与JAVA BEAN的区别
Aug 29 面试题
Prototype如何为一个Ajax添加一个参数
Dec 06 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
php生成无限栏目树
2017/03/16 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
在Django的视图(View)外使用Session的方法
2015/07/23 Python
利用Python获取操作系统信息实例
2016/09/02 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
Sanic框架配置操作分析
2018/07/17 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
新员工欢迎词
2014/01/12 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2014最新实习证明模板
2014/10/02 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
python 对图片进行简单的处理
2021/06/23 Python