不知道指针类型?那就强转void*。这是C/C++程序员经常遇到的问题,那么void* 到底是什么意思呢,接下来我就和大家说一说他的详解和应用
void在英文词典中译为“空虚、空间、空隙”,而它在C/C++中被翻译为“无类型”,相应的void*则为“无类型指针”
void作用作用1:限定函数返回值的类型
当函数不需要返回值的时候,我们可以用void类型,如下
void fun(int a);
作用2:限定函数参数
当函数不需要参数的时候,我们可以在函数的参数列表中写上void,如下
int fun(void);void*使用规则
1、void*可以指向任何类型的指针,也就是说任何类型的指针都可以给void*赋值
int* a = NULL; void *p = NULL; p = a;
但是如果要给指针p赋值给其他类型的指针,就必须强转
int *b = NULL; b = (int*)p;
这里我们可以看到malloc函数,他的函数原型是
void *malloc(unsigned int size)
所以我们用malloc申请空间的时候,我们都必须显式强转到对应的类型,才能成功进行空间申请
2、void*类型不能进行一些算数操作,比如p++、p+=1等,因为void*是无类型指针,同样就不能知道它的内存,所以不能进行一些运算操作。当然也没有人会给自己定义一个void类型的变量,所以这一点我就不会详细讲述,如果大家想要了解,可以去看看原文,其中有很详细的说明为什么void*不能进行这些操作
C语言中void*详解及应用 - wuyudong - 博客园 (cnblogs.com)



