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


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的接口和C++的虚类的相同和不同处
Mar 27 面试题
金智子午JAVA面试题
Sep 04 面试题
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
Jun 11 面试题
C语言笔试集
Jul 24 面试题
一个C/C++编程面试题
Nov 10 面试题
经典c++面试题六
Jan 18 面试题
.net笔试题
Mar 03 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
Jul 26 面试题
外企测试工程师面试题
Feb 01 面试题
如何利用XMLHTTP检测URL及探测服务器信息
Nov 10 面试题
关于Java finally的面试题
Apr 27 面试题
初级Java程序员面试题
Mar 03 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
用JS实现的一个include函数
2007/07/21 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
python常见排序算法基础教程
2017/04/13 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python如何读取、写入CSV数据
2020/07/28 Python
Python 中如何写注释
2020/08/28 Python
我的理想演讲稿
2014/04/30 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年环保局工作总结
2014/12/11 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers