void * 类型指针
时间: 2023-05-30 20:07:49 浏览: 85
void * 类型指针是一种通用的指针类型,可以指向任何数据类型的地址。它的定义方式为:
void *p;
其中,p 是一个指向任何类型的指针。它可以指向任何类型的变量,但不能直接进行操作,需要先将其转换为具体的类型指针才能进行操作,如:
int *p1 = (int *)p;
这样就将 void * 类型指针转换成了 int 类型指针,可以对其进行操作了。void * 类型指针在 C 语言中的应用非常广泛,例如在动态内存分配中使用 malloc() 函数返回的就是 void * 类型指针。
相关问题
c++删除void*类型指针时提示deleting void* is undefined
是的,这是因为 `void*` 类型指针是一个泛型指针,它没有确定的大小和类型信息,因此不能直接进行删除操作。
如果您需要删除一个 `void*` 类型指针,您需要先将其转换为一个确定的类型,然后再进行删除操作。例如:
```
void* ptr = new int(10);
int* int_ptr = static_cast<int*>(ptr);
delete int_ptr;
```
在这个例子中,我们首先创建了一个 `void*` 类型的指针 `ptr`,并将其指向一个 `int` 类型的数据。然后,我们使用 `static_cast` 将 `ptr` 转换为 `int*` 类型的指针 `int_ptr`,然后使用 `delete` 删除 `int_ptr` 指向的数据。
请注意,如果您将一个 `void*` 类型的指针转换为一个错误的类型,或者您在删除指针时没有将其转换为正确的类型,那么程序可能会出现未定义的行为。因此,在进行任何类型转换和删除操作时,请确保您的代码是正确的。
请简述下void *类型的指针
void *类型的指针是一种通用指针类型,可以指向任何类型的数据。它不关心指向的数据类型,只关心指针的地址。因此,void *类型的指针可以用来传递任何类型的指针参数,也可以用来接收任何类型的指针返回值。在使用void *类型的指针时,需要注意类型转换的问题。