C语言 void 指针就是空指针吗?它有什么作⽤?

一、问题

这是⼀个在⾯试时很容易出现的问题,但是也是很多⼈混淆的问题,这个问题如何回答?

二、解答

void 指针⼀般称为通⽤指针,要与空指针严格区分。void 指针⽤于指向⼀个不属于任 何类型的对象,所以 void 指针称为通⽤指针。

例如下⾯的声明。

cpp 复制代码
int *p; 
void *pt;

指针 *p 表示指向整型数据的指针;指针 *pt 表示所指向的对象不属于任何类型。 void 指针表示指向不属于任何类型的对象,它与空指针完全是两回事。 void 指针可以应⽤于函数指针,也可以应⽤于纯粹的内存操作。

三、总结

在指针和链表中使⽤⾮常⼴泛的空指针,表示的是不指向任何对象的⼀种指针。空指针通常定义⼀个常量 NULL 来表⽰,NULL 的值为 0。它是在头⽂件 <stddef.h> 中定义的个宏,其值与任何有效的指针的值是不同的。NULL 是 0 ,它可能被强制转换为 void * 或者 char*,即 NULL 可能是 0 或者 (void*)0。

空指针⼀般应⽤于以下三种情况:

(1)⽤空指针终⽌对递归数组结构的间接引⽤。

(2)⽤空指针作为函数调⽤失败时的返回值。

(3)⽤空指针作为警戒值。

注意:

不能间接引⽤⼀个空指针,否则,程序可能会得到⼀个毫⽆疑义的结果或者⼀个全是0 的值,⽽突然停⽌。

相关推荐
LOVE️YOU3 小时前
Python 中 Tuple 为什么有时可 Hash,有时不可 Hash?
开发语言·python·哈希算法
李永奉3 小时前
C语言-指针函数与函数指针及回调函数的使用
c语言·开发语言
小oo呆3 小时前
【学习心得】迭代器和可迭代对象
开发语言·python
AC赳赳老秦3 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up3 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
迅猛龙办公室3 小时前
Python输出当前计算机的系统日期和时间
开发语言·前端·python
杨丰玮4184 小时前
C语言基础知识(一)————各类符号的含义与输入输出库(stdio)
c语言·开发语言
程序猿编码4 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
水饺编程5 小时前
第1章,了解乌班图环境,使用浏览器和邮箱
c语言·汇编·ubuntu
言乐65 小时前
Python实现语音审核模型
开发语言·python·django·virtualenv·pygame