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


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

面试题 相关文章推荐
JPA面试常见问题
Nov 14 面试题
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
Sep 16 面试题
"引用"与指针的区别是什么
Sep 07 面试题
为数据库创建索引都需要注意些什么
Jul 17 面试题
Net Remoting把服务器端激活两种模式
Jan 22 面试题
.NET面试问题集
Dec 08 面试题
什么是View State?
Jan 27 面试题
下列程序在32位linux或unix中的结果是什么
Jan 26 面试题
50道外企软件测试面试题
Aug 18 面试题
如何拷贝一整个Java对象,包括它的状态
Dec 27 面试题
怎样自定义一个异常类
Sep 27 面试题
JPA的优势都有哪些
Jul 04 面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
Aug 17 #面试题
New delete 与malloc free 的联系与区别
Feb 04 #面试题
我看到了用指针调用函数的不同语法形式
Jul 16 #面试题
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP+DBM的同学录程序(5)
2006/10/09 PHP
php 文件上传系统手记
2009/10/26 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
PHP获取url的函数代码
2011/08/02 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
php桥接模式应用案例分析
2019/10/23 PHP
javascript 解析url的search方法
2010/02/09 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
在Python下尝试多线程编程
2015/04/28 Python
初步讲解Python中的元组概念
2015/05/21 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python中的pack和unpack的使用
2018/03/12 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python assert关键字原理及实例解析
2019/12/13 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
通俗讲解python 装饰器
2020/09/07 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
运动会广播稿500字
2014/01/28 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
活动总结怎么写啊
2014/05/07 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python