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


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

面试题 相关文章推荐
新浪网技术部笔试题
Aug 26 面试题
Java面试题:请问一下代码输出是什么
May 27 面试题
东方通信股份有限公司VC面试题
Aug 27 面试题
一个C/C++编程面试题
Nov 10 面试题
华为c/c++笔试题
Jan 25 面试题
聚网科技C++面试笔试题
Sep 01 面试题
C#面试问题
Jul 29 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
Aug 10 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
Jul 11 面试题
如何进行Linux分区优化
Sep 13 面试题
Java如何支持I18N?
Oct 31 面试题
介绍一下你对SOA的认识
Apr 24 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
json的使用小结
2016/06/08 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
如何使用python传入不确定个数参数
2020/02/18 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
生日宴会主持词
2014/03/20 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
清洁工个人总结
2015/03/04 职场文书
留学推荐信英文范文
2015/03/26 职场文书
高中班主任寄语
2019/06/21 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
导游词之河北邯郸
2019/09/12 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
基于angular实现树形二级表格
2021/10/16 Javascript
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android