c++ void*讲解

本文介绍了C++中的void指针,它是一种无类型指针,能够接受任何类型指针的赋值。通过强制类型转换,void指针可以灵活地转换为其他类型指针。在函数参数和返回值中,void指针常用于增加代码的通用性。然而,由于不携带类型信息,使用时需要确保正确的类型转换,以避免类型错误。

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

在指针操作中void* 是常用的一种指针,也被称为无类型指针,该指针可以认为是指针类型的一种抽象。

无类型指针性质

void指针可以接受一切有类型指针赋值

    float obj = 1.2;
    float* pobj = &obj;
    void* pv = &obj;    //void指针可以指向任意类型的变量
    pv = pobj;          //void指针可以被任意类型的指针赋值

void指针赋值时需要强制转换

float* pf = (float*)pv;

void指针记录的是内存的位置,但是该块内存存放的是何种类型的对象,该对象一共占用多少个字节,这些都是不知道的。

因此若想使用void指针进行赋值,必须先进行强制类型转换,定义好该内存存放的对象,才能使用。

void指针可以与其他类型指针比较地址

std::cout<<(pv == pobj)<<std::endl;

虽然不一定知道void指针指向什么类型的对象,但它内部保存的地址是实际存在的,因此可以和其他指针保存的地址进行比较。

无类型指针的应用

从性质中可以看出,void指针可以接受一切类型指针的赋值,又可以通过强制转换赋值给其他一切类型的指针,具备相当的灵活性,因此常用于函数的参数与返回值,这样在编写函数时就不需要为各种指针提供处理方案了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值