074 万能的箱子(void*)

【实例描述】
指针有一个变量类型为void*,它可以指向任意类型的数据,即任意类型的指针可以赋值给void*,但反过来,void*不可以赋值给其他类型的指针,除非采用强制类型转换,本实例以万能的箱子演示void*指针如何被任意类型的指针变量赋值,效果如图:
这里写图片描述
实现过程:
定义变量a(char型)、b(整型),并且进行初始化。函数decrease()用于将变量的值减1,该函数的输入参数是void*类型,因此可以实现任意类型变量的减1功能(本实例只实现对char型和int型变量的功能操作),代码如下:

#include <QCoreApplication>
#include <iostream>
using namespace std;

void decrease(void* data,int psize) //减法函数
{
    switch(psize)
    {
    case 1:
        char* pchar;    //字符
        pchar =(char*)data; //void*转换为char型
        --(*pchar); //减法
        break;
    case sizeof(int):   //整型
        int *pint;
        pint =(int*)data;   //void*转换为int型
        --(*pint);  //减法
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    char a1='d';
    int b=102;
    decrease(&a1,sizeof(a1));
    decrease(&b,sizeof(b));
    cout<<a1<<","<<b<<endl;
    return a.exec();
}

ps:
void*指针赋值给其他类型指针也需要类型转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值