我在结构中有两个空指针。
typedef struct DATA_T {
BOOLEAN trigger;
void *var_p;
void *data_p;
} DATA_T;
typedef struct ITEM_T {
DATA_T job_data[100];
BOOLEAN job_active;
BOOLEAN job_send;
} ITEM_T;
ITEM_T foo[100];
我将两个空指针分配给了不同的地址。现在,我在一个指针上有一个值,我想将另一个指针设置为该值。
foo[i].job_data[j]->data_p = *(int*)foo[i].job_data[j].var_p;
然后发布此错误:
error C2232: '->data_p' : left operand has 'struct' type, use '.'
我不相信我想要一个 .
来代替这里的 ->
,因为我需要取消引用指针 data_p
。
感谢您的协助。
最佳答案
错误信息是因为job_data[j]
不是一个指针。它是一个 DATA_T
。所以左边应该是 foo[i].job_data[j].data_p =
。
但是还有一个错误。在右侧,*(int *)
生成一个 int
,它不能存储在 void *
中。
如果你想让两个指针指向同一个地方,那么删除*(int *)
。
如果两个指针实际上都指向 int
,而你想在两边复制指向的值,那么在两边都放上 *(int *)
.
关于c - 在 void 指针的指针值处赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28864303/