我正在尝试理解代码。但我无法理解最后一行?
*(uint8_t*)&b[8]=
的结果是什么?
typedef uint8_t a;
uint8_t *b = new uint8_t[100];
RPC_flags_t c;
c=0U;
*((a*)&(b[8]))=c;
答案 0 :(得分:2)
它采用b[8]
的地址,将其转换为指向a
的指针,然后将c
的内容分配给它指向的内存。
答案 1 :(得分:1)
这是b[8] = c;
&(b[8])
是b + 8
(或地址b[8]
)(a*)&(b[8])
是对a*
的投射,因此uint8_t*
已经是[{1}}的类型,因此它等同于b + 8
&(b[8])
*((a*)&(b[8]))
*&(b[8])
。