指向void的指针

指向void的指针是个非常有趣的东西,一个指向任何对象类型的指针都可以赋值给类型为void *的变量,void *可以赋值给另一个void *,两个void *可以比较是否相等(当两个指针比较时,是看它们是否指向同一块内存地址),而且可以显示的将void *转换到另一个类型。初次之外,其他任何对void *的操作都是不安全的,因为编译器不知道它实际指向哪个对象。请看下面的实例:

void f(int *pi) 

    void *pv =pi;              //可以,从int*到void*的隐式转换 
    *pv;                                             //错误:void*不能间接引用 
    pv++;                                                //错误:void* 不能增量(因为不知道被指对象的大小) 
    int *pi2 = static_cast<int *>(pv);    //可以,被显示的转换回int* 
    double *pd1 = pv;                 //错误 
    double *pd2 = pi;                                    //错误 
    double *pd3 = static_cast<double *>(pv);   //不安全的 
}

==============================================================================================================

void*的用途有两点:

1、需要向函数传递一个指针,而又不能对对象的类型做任何假设;

2、从函数返回一个无类型的对象。要使用这样的对象就必须通过显示的类型转换。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值