在C++中,我收到一条消息"错误:'void*'不是指向对象的指针类型"

dro*_*n07 0 c++ compiler-errors codeblocks void-pointers memory-address

这是我的代码:

#include <iostream>
using namespace std;

int main()
{
   void *x;
   int arr[10];
   x = arr;
   *x = 23; //This is where I get the error
}
Run Code Online (Sandbox Code Playgroud)

如您所见,代码非常简单.它只是创建一个void指针x,它指向数组'arr'的内存地址,并将整数23放入该内存地址.但是当我编译它时,我收到错误消息"'void*'不是指向对象的指针类型".当我使用'int'指针而不是void指针然后编译它时,我没有得到任何错误或警告.我想知道为什么我会收到这个错误.

谢谢.

Kon*_*lph 8

正如编译器消息所说,void*不是指向对象类型的指针.这意味着,你不能做什么void*,除了明确地将其转换回另一个指针类型.A void*表示一个地址,但它没有指定它所指向的事物的类型,因此您无法对其进行操作.