什么是void指针,什么是空指针?
所以我正在经历一些面试问题,我遇到了一个关于void和null指针的问题,声称:
没有返回类型的指针称为空指针。它可以是任何类型的数据类型。
这彻底迷惑了我!它似乎无效,根据这个问题,null可以互换使用,我不相信这是正确的。我假设void是一个返回类型,null是一个值。但我只是一个代码新手,我不确定我是对的。
请表达您对空指针是什么以及空指针是什么的看法。我不是在寻找null和void之间的区别。
没有找到相关结果
已邀请:
9 个回复
容淑阔九
)是指向某个内存位置的原始指针。 根据定义,空指针是一个特殊的指针,它不指向任何东西。它可以是指向任何类型的指针,无效或其他类型。 void指针可以为null或不为:
非void指针也可以为null:
傻零凰死授
是通用指针类型,因为任何指针类型(指向const和/或volatile的指针除外)都可以隐式转换为
。换句话说,您可以将任何指针指定给类型为
的变量。空指针是指针值0
畦桨存灯
类型通常意味着没有给出类型信息。 你应该始终记住指针传达两条信息:指向数据的类型(
,
,...),它指定如何解释它,以及它指向的数据的地址,它指定了在哪里可以获得指向数据的实际值。 类型信息是指针的类型(
,
,...),而数据的地址是指针变量中包含的实际值。 因此,
指针(
)是一个指针,不指定任何类型信息。它告诉您数据的位置,但它不会告诉您如何解释它。你知道在那个地址有一些东西,但是你不知道它是
,
还是一群飞牛。要实际使用这些数据,您必须以其他方式获取有关它的类型信息(例如,使用其他一些魔术参数),将该指针强制转换为常规指针类型,然后照常使用它。
经常用于C语言,为泛型编程提供某种支持;例如,参见
C库函数。 相反,
指针是一个指向任何东西的指针。在这种情况下,通常存在关于指针的类型信息,但它是缺少的指向数据的地址。当然,有一个
可能是
。 快速示例(假设
被声明为
):
琐事:
,至少在现行标准中,保证为0。 在该语言的其他领域,
总是用于指定缺少类型。使用它作为返回值(注意:我现在谈论的是
,而不是
)意味着该函数不返回任何值,并且将表达式转换为void是一种丢弃值的奇特方式(您发信号通知编译器和其他程序员,你意识到你没有使用某个值)。
杰黔轿缺
剿畦缄饥小
寇剩
乏摩纶誊伟
是完全有效的代码,只是说这个指针能够指向一个无类型的对象,但现在它不是。
鞋扣蚊冈借
)的正确指针。但是,void指针可以是空指针,但是随后引用指针会产生错误。
壬驴拿歪竞
是指针,可用于指向任何类型的数据。它可能是
,
,
。它没有返回类型,最初指针是用指针类型创建的(具有十六进制值),我们可以将此指针指定给任何类型的数据。 虽然空指针是具有NULL值作为地址的指针,但指针被赋予NULL值,因此它不能用于访问其地址在创建时可能包含的其他数据。我认为,如果此时未使用指针,则指定NULL是一种很好的编程技术。