如果仅对一个结构进行更改,则反映对两个结构的更改

时间:2018-05-29 18:37:46

标签: c

我有以下结构,access2通过ctx1间接使用access1。假设我将val1的值设置为access2,我如何确保access1也反映main()中显示的相同更改?

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;
}

1 个答案:

答案 0 :(得分:3)

acc设置为指向该子结构的地址:

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

您也从未为base2分配空间指向,它应该是:

access2 *base2 = malloc(sizeof access2);