我有以下结构,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;
}
答案 0 :(得分:3)
将acc
设置为指向该子结构的地址:
access1 *acc = &(base2->base1);
您也从未为base2
分配空间指向,它应该是:
access2 *base2 = malloc(sizeof access2);