gpt4 book ai didi

c - 在 void 指针的指针值处赋值

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:54 24 4
gpt4 key购买 nike

我在结构中有两个空指针。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com