【发布时间】:2015-04-12 04:24:58
【问题描述】:
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
void *x;
int arr[10];
x = arr;
*x = 23; //This is where I get the error
}
如您所见,代码非常简单。它只是创建一个指向数组'arr'的内存地址的空指针x,并将整数23放入该内存地址。但是当我编译它时,我收到错误消息“'void*' is not a pointer-to-object type”。当我使用“int”指针而不是 void 指针然后编译它时,我没有收到任何错误或警告。我想知道为什么会出现这个错误。
谢谢。
【问题讨论】:
-
与
void y; y = 32;无法编译的原因相同:编译器不知道如何将某些内容存储到不完整类型void中。如果x指向short或long long怎么办? -
这也取决于你的编译器。诠释* x = 42; LLVM 产生错误。
-
@chrizke 您的代码与问题有何关联?
-
@Slava,你是对的。我错过了 *x=23; 中 x 左边的 *。
标签: c++ compiler-errors codeblocks memory-address void-pointers