074 万能的箱子(void*)

来源:互联网 发布:加工中心常用编程代码 编辑:程序博客网 时间:2024/05/29 17:04

【实例描述】
指针有一个变量类型为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
原创粉丝点击