空指针,通用指针

本文详细解释了C语言中的空指针概念及其用途,并介绍了通用指针void*的特点及使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西。空指针用0表示,C语言保证这个值不会是任何对象的地址。给指针值赋零则使它不再指向任何有意义的东西,使之不会因为未定义而指向了不该指的内存区域,而造成系统崩溃。为了提高程序的可读性,标准库定义了一个与0等价的符号常量NULL.    程序里可以写 p = 0;     或者 p = NULL; 两种写法都把p置为空指针值。相对而言,前一种写法更容易使读程序的人意识到这里是一个指针赋值。

 

 

我们印象中C语言的指针都有类型,实际上也存在一种例外。这里涉及到通用指针,它可以指向任何类型的变量。通用指针的类型用(void *)表示,因此也称为void 指针。
int n=3, *p;
void *gp;
gp = &n;
p=(int *)gp1;

 

通用指针void*,抽象的无类型指针,void *可以指向任何类型的数据;其出现只是为了一种抽象的需要;因为现实数据都是有类型的。
通常,只有相同类型的指针才可以直接相互赋值;而void*则不同,任何类型的都可以直接赋值给它,如void *p1;int *p2;p1 = p2;不需强制类型转换;但这并不意味着void*可以任意直接赋值给其他类型如void *p1;int *p2;p2 = p1;(C编译器可能不报错,但C++中就必须强制转换),因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值