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


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

面试题 相关文章推荐
如何处理简单的PHP错误
Oct 14 面试题
请用用Java代码写一个堆栈
Jan 26 面试题
普天C++笔试题
Mar 20 面试题
使用索引(Index)有哪些需要考虑的因素
Oct 19 面试题
2019年.net常见面试问题
Feb 12 面试题
Linux内核产生并发的原因
Jul 13 面试题
介绍一下EJB的体系结构
Aug 01 面试题
如何用JQuery进行表单验证
May 29 面试题
几个MySql的面试题
Apr 22 面试题
如何从一个文件档案的尾端新增记录
Dec 02 面试题
JAVA中运算符的分类及举例
Sep 12 面试题
如何通过jdbc调用存储过程
Apr 19 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
常用的javascript function代码
2008/05/23 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
Seajs源码详解分析
2019/04/02 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python实现xlsx文件分析详解
2018/01/02 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
数据库面试要点基本概念
2013/10/31 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
美化环境标语
2014/06/20 职场文书
会计岗位说明书
2014/07/29 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
迎新年主持词
2015/07/06 职场文书
大学生党课感想
2015/08/11 职场文书
《实心球》教学反思
2016/02/23 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
Pytest中skip skipif跳过用例详解
2021/06/30 Python
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers