假设您有一个节点struct
,其属性为void* data
。
是否可以将此指针的值设置为某个任意整数值(即,而不是像node->data = &random_integer
那样做。)
我尝试以下几行:
NodePtr node = malloc(sizeof(Node));
*((int*)(node->data)) = 0;
此编译没有错误和警告,但会导致段错误。我不确定为什么。
我可以轻松地将void指针设置为某些&int
,但是我必须为&int
分配空间......这对于这样一个简单的操作来说似乎是不必要的。
答案 0 :(得分:3)
*(node->data)
这意味着您正在尝试从node-> data指向的内存位置进行读取。 在您的代码中,我们不会将node->数据指向任何内存位置。 首先使用malloc为节点>数据提供一些内存。
node->data = malloc(sizeof(int));
然后尝试访问该值或写入它。
*((int *)(node->data)) = 1; /* or any value */