将void指针的值设置为整数

时间:2014-11-12 10:54:06

标签: c segmentation-fault void-pointers

假设您有一个节点struct,其属性为void* data

是否可以将此指针的值设置为某个任意整数值(即,而不是像node->data = &random_integer那样做。)

我尝试以下几行:

NodePtr node = malloc(sizeof(Node));
*((int*)(node->data)) = 0;

此编译没有错误和警告,但会导致段错误。我不确定为什么。

我可以轻松地将void指针设置为某些&int,但是我必须为&int分配空间......这对于这样一个简单的操作来说似乎是不必要的。

1 个答案:

答案 0 :(得分:3)

*(node->data)

这意味着您正在尝试从node-> data指向的内存位置进行读取。 在您的代码中,我们不会将node->数据指向任何内存位置。  首先使用malloc为节点>数据提供一些内存。

node->data = malloc(sizeof(int));

然后尝试访问该值或写入它。

*((int *)(node->data)) = 1; /* or any value */