C++学习笔记———void *

本篇文章简单总结一下C++中void*的用法。在C++中,用void*  定义一个void类型的指针,它不指向任何类型的数据,意思是,void*指针“指向空类型”或“不指向确定的类型”,而不要理解为void*指针能指向“任何的类型”数据。简而言之,void*只提供一个地址,没有指向。void *的一些用法如下:

1. void *类型可以接受任意类型指针。

例如:

void *p1;

char *p2 = “hellp”;

p1 = p2;

或者

int a;

int *p = &a;

memset(p, 0, 4);
char c[4];

char *p = c;

memset(p, 0, 4);

memset的第一个参数就是void *。以上代码运行都是没有问题的,任何类型的指针都可以直接赋值给它,无需进行强制类型转换。但需要注意的一点是,void *的类型并不能无需类型转换直接赋值给其他类型,比如malloc的返回值是void *,那么我们一般这样写:char *p = (char *)malloc(4);

2.不允许使用void*指针操作它所指向的对象

例如,不允许对void*指针进行解引用。不允许对void*指针进行算术操作。

比如我们不要做类似这样的操作:

void *p;

p++;

另外,在实际开发中,void* 使用时最终都要强制转换成某种明确的数据类型。

参考https://blog.csdn.net/Gordennizaicunzai/article/details/78007584

        https://blog.csdn.net/xjsbkx/article/details/78833066

猜你喜欢

转载自blog.csdn.net/qq_37553152/article/details/88411879