C,错误:表达式必须是可修改的左值

Isl*_*dan 2 c pointers casting void-pointers

我有以下代码:

#define NULL ((void*)0)
void* Globalptr = NULL;
void func(ptrtype* input)
{
 ((ptrtype*)Globalptr) = input;
}
Run Code Online (Sandbox Code Playgroud)

我在网上得到错误((ptrtype*)Globalptr) = input;说"表达式必须是可修改的左值"

use*_*733 7

您必须使数据与变量(左值)匹配,而不是更改变量的类型以匹配数据:

Globalptr = (void*)input;
Run Code Online (Sandbox Code Playgroud)

但由于您可以将任何数据指针转换为void*C,您可以简单地执行以下操作:

Globalptr = input;
Run Code Online (Sandbox Code Playgroud)