我在结构中有两个void指针。
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];
我将两个void指针分配给不同的地址。现在,我在一个指针处有一个值,并希望将另一个指针=设置为该值。
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
。
感谢您的协助。
答案 0 :(得分:2)
错误消息是因为job_data[j]
不是指针。这是DATA_T
。因此,左侧应为foo[i].job_data[j].data_p =
。
但是还有另一个错误。在右侧,*(int *)
生成int
,无法存储在void *
中。
如果您想让两个指针指向同一个地方,请删除*(int *)
。
如果两个指针实际指向int
s,并且您想要复制两侧的指向值,则将*(int *)
放在两边。
答案 1 :(得分:0)
job_data数组的元素不是指针,它们是DATA_T的类型。