【实例描述】
指针有一个变量类型为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*指针赋值给其他类型指针也需要类型转换