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


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如何调用MYSQL存储过程
May 30 面试题
error和exception有什么区别
Oct 02 面试题
VC++笔试题
Oct 13 面试题
Android面试题附答案
Dec 08 面试题
一套带网友答案的.NET笔试题
Dec 06 面试题
恒华伟业笔试面试题
Feb 26 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
May 30 面试题
如何清空Session
Feb 23 面试题
关键字throw与throws的用法差异
Nov 22 面试题
什么是继承
Dec 07 面试题
金鑫耀Java笔试题
Sep 06 面试题
DELPHI中如何调用API,可举例说明
Jan 16 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
php异常处理方法实例汇总
2015/06/24 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php curl常用的5个经典例子
2017/01/20 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
使用JavaScript破解web
2018/09/28 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
生物化学研究助理员求职信
2013/10/09 职场文书
机械电子工程毕业生自荐信
2013/11/23 职场文书
《自然之道》教学反思
2014/02/11 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
先进党员事迹材料
2014/12/24 职场文书
中学图书馆工作总结
2015/08/11 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
Python学习之包与模块详解
2022/03/19 Python