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

来源:本站
导读:目前正在解读《怎样在程序里获得一个空指针》的相关信息,《怎样在程序里获得一个空指针》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《怎样在程序里获得一个空指针》的详细说明。
简介:空指针在概念上不同于未初始化的指针。空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方。

根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说,在初始化、赋值或比较的时候, 如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:

char *p = 0;

if(p != 0)

然而, 传入函数的参数不一定被当作指针环境, 因而编译器可能不能识别未加修饰的0 “表示” 指针。在函数调用的上下文中生成空指针需要明确的类型转换,强制把0 看作指针。例如, Unix 系统调用execl 接受变长的以空指针结束的字符指针参数。它应该如下正确调用:

execl("/bin/sh", "sh", "-c", "date", (char *)0);

如果省略最后一个参数的(char *) 转换, 则编译器无从知道这是一个空指针,从而当作一个0 传入。(注意很多Unix 手册在这个例子上都弄错了。) 如果范围内有函数原型, 则参数传递变为“赋值上下文”, 从而可以安全省略多数类型转换, 因为原型告知编译器需要指针, 使之把未加修饰的0 正确转换为适当的指针。函数原型不能为变长参数列表中的可变参数提供类型。在函数调用时对所有的空指针进行类型转换可能是预防可变参数和无原型函数出问题的最安全的办法。

提醒:《怎样在程序里获得一个空指针》最后刷新时间 2024-03-14 01:00:17,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《怎样在程序里获得一个空指针》该内容的真实性请自行鉴别。