从void指针指定指针值的值

时间:2015-03-04 20:31:16

标签: c pointers

我在结构中有两个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

感谢您的协助。

2 个答案:

答案 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的类型。