c - 如果仅对一个结构进行更改,则反射(reflect)对两个结构的更改

标签 c

我有以下结构,其中 access2 通过 access1 间接使用 ctx1。假设如果我通过 access2 设置 val1 的值,我怎样才能确保 access1 也反射(reflect)与 中所示相同的更改主要()

typedef struct __ctx1{
   int val1;
   int val2;
}ctx1;

typedef struct __access1{
   int counts;
   ctx1 cx1;
}access1;

typedef struct __access2{
  int options;
  access1 base1;
}access2;


int main(){
 access2 *base2;
 base2->base1.cx1.val1 = 5;
 access1 *acc;
 printf("val1 %d\n",acc->cx1.val1);
 return 0;
}

最佳答案

设置acc指向那个子结构的地址:

access1 *acc = &(base2->base1);

你也从来没有为base2分配空间指向,它应该是:

access2 *base2 = malloc(sizeof access2);

关于c - 如果仅对一个结构进行更改,则反射(reflect)对两个结构的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590883/

相关文章:

c++ - 编译后链接错误

c - Linux 文件创建大小

c - 为什么 inet_ntoa 总是返回 0.0.0.0 作为 ip 地址?

c - 查看是否通过 tcp 传递了消息

c - gethostbyname 一次失败永不成功

c - 将文本从结构中保存在 char 数组中

c - 将硬 float 链接到 softfp 不良性能

C - 加密算法

c - 在 c 中按星期几分组列表

c++ - 使用 isdigit 和 isalpha 将 char 数组设置为彼此相等