引用void*指针中的问题?

tea*_*her 3 c c++

这段代码:

int p = 10;
void *q;
*q = 10;
Run Code Online (Sandbox Code Playgroud)

不编译:

'=':无法从'int'转换为'void*'

但是,此代码编译良好:

int p = 10;
void *q;
q = &p;
Run Code Online (Sandbox Code Playgroud)

它背后的原因是什么?

Jon*_*ler 5

void *指向未知类型的数据(如果它被初始化,这是你不).

您只能分配已知类型的变量,或通过已知类型的指针.

int p = 10;
void *q = &p;

*(int *)q = 20;

if (p != 20)
    ...something has gone horribly wrong...
Run Code Online (Sandbox Code Playgroud)

这将转换void *为a int *然后为该解除引用的整数指针赋值.