看起来像一些基本的东西。 但我不明白为什么
(*ptr).my_data_ptr->my_data[0].b
有效,而
*((*ptr).my_data_ptr).my_data[0].b
没有。
我给出了以下各种数据类型之间的关系:
typedef struct { int a; int b;} MY_DATA;
typedef struct { MY_DATA my_data[2];} MY_DATA_ARR;
typedef struct { MY_DATA_ARR *my_data_ptr;} MY_PARAM;
typedef MY_PARAM * MY_PARAM_PTR;
最佳答案
这是因为a->b
等价于(*a).b
,不是 *a.b
。引用C Operator Precedence , 成员访问的优先级 .
高于解引用 *
.
对此进行更改 - 它会起作用:
(*((*ptr).my_data_ptr)).my_data[0].b
关于c - 结构中的数组和访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987165/