invalid conversation from void* to int*
时间: 2024-09-22 19:06:39 浏览: 42
invalid conversion from type1 to type2 (解决方案).md
"Invalid conversion from `void*` to `int*`" 这个错误信息通常发生在C或C++程序中,当你试图将一个指向不确定类型(`void*`)的数据指针转换为一个特定类型的指针(如`int*`),而这种转换在编译时是不被支持的。
在C语言中,`void*`是一种通用指针类型,它可以指向任何类型的变量,但没有具体的类型信息。如果你尝试直接将其赋值给一个`int*`,编译器或运行时环境无法确定其实际存储的是什么样的整数,因此这个操作是不允许的。
要正确地进行这种转换,你需要确保你知道原始`void*`指向的确切数据类型。一般来说,你应该先使用`reinterpret_cast`(C++)、`cast`(C99标准之后)或者其他类型安全的方法将其转换为正确的指针类型。例如:
```cpp
// 假设ptr是一个已知为int的void*指针
int* int_ptr = static_cast<int*>(ptr);
```
或者
```c
// 如果知道sizeof(int),也可以用memcpy
char buffer[sizeof(int)];
memcpy(&buffer, ptr, sizeof(int));
int* int_ptr = (int*)buffer;
```
阅读全文