将值分配给解除引用的void指针

Ruy*_*Ruy 9 c

我正在用c ++编写一个类,它支持任何类型的变量来帮助我完成未来的项目.问题是,当我尝试为void*变量赋值时,我得到错误:void*不是指向对象的指针类型.这是代码:

int main (void) {
    void* a;
    int x;
    a = malloc(sizeof(int));
    x = 120;
    ((int)(*a)) = x;
    printf("%d",((int)*a));
    free(a);
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我看到它就像我试图在为a保留的内存块中分配x的值.我希望存储在x中的值存储在a的内存块中.可以帮我吗?

kar*_*lip 5

你可能想做:

void* a;
int x;
a = malloc(sizeof(int));
x = 120;
*(int*)a = x;
printf("%d", * (int*)a);
free(a);
Run Code Online (Sandbox Code Playgroud)


Pup*_*ppy 3

首先,您必须转换a为适当的指针类型,然后取消引用它。其次,使用模板——这就是它们的用途。第三,malloc和free是baaaad,好吗?不。如果您认为这是好的代码,那么您需要认真的补救 C++。第四,这已经完成了——boost::any就是为了这个目的。

  • 这就是我讨厌“C/C++”的原因。 (11认同)