c++ void*讲解

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

猜你喜欢

转载自blog.csdn.net/m0_37872216/article/details/126886155