void*的简单用法

  • Post author:
  • Post category:其他


1. void *表示一个“不知道类型”的指针,也就不知道 从这个指针地址开始 多少字节 为一个数据。

2. 因此void*只能表示一个地址,不能用来&,也不能+ -移动指针,因为不知道多少字节是一个数据单位。 要想移动 void* 类型的指针,就必须强制类型转换为其他指针。

3. 对指针变量的解引用,使用间接运算符*达到目的。但是在使用空指针的情况下,需要转换指针变量以解引用。这是因为空指针没有与之关联的数据类型。编译器无法知道void指针指向的数据类型。

举个简单例子

void* my_memcpy(void* dest, const void* src, size_t num)
	{
		
		*(char*)dest = *(char*)src;
        //这里解引用,进行了强制类型转换,转换成了 char*

		dest = (char*)dest + 1;
		src = (char*)src + 1;
        //这里移动,也需要进行强制类型转换
		
		...
        ...
        ...
	}



版权声明:本文为m0_73292466原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。