C++面试题

当前位置: 面试问题网 > C++面试题 > 怎样在程序里获得一个空指针

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

根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说, 在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:
   char *p = 0;
   if(p != 0)
   然而, 传入函数的参数不一定被当作指针环境, 因而编译器可能不能识别未加修饰的0 “表示” 指针。在函数调用的上下文中生成空指针需要明确的类型转换,强制把0 看作指针。例如, Unix 系统调用execl 接受变长的以空指针结束的字符指针参数。它应该如下正确调用:
   execl(“/bin/sh”, “sh”, “-c”, “date”, (char *)0);
   如果省略最后一个参数的(char *) 转换, 则编译器无从知道这是一个空指针,从而当作一个0 传入。(注意很多Unix 手册在这个例子上都弄错了。
   如果范围内有函数原型, 则参数传递变为“赋值上下文”, 从而可以安全省略多数类型转换, 因为原型告知编译器需要指针, 使之把未加修饰的0 正确转换为适当的指针。函数原型不能为变长参数列表中的可变参数提供类型。在函数调用时对所有的空指针进行类型转换可能是预防可变参数和无原型函数出问题的最安全的办法。

【怎样在程序里获得一个空指针】相关文章

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

2. 用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?

3. 如果NULL和0作为空指针常数是等价的,那我到底该用哪一个

4. 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?

5. 在使用非全零作为空指针内部表达的机器上, NULL是如何定义

6. 空指针到底是什么

7. 怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?

8. 我能否用void** 指针作为参数, 使函数按引用接受一般指针

9. 几道Oracle面试题值得一看

10. 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数

本文来源:https://www.mianshiwenti.com/a13101.html

点击展开全部

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

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝怎样在程序里获得一个空指针﹞相关内容

「怎样在程序里获得一个空指针」相关专题

其它栏目

也许您还喜欢