什么是类型和指针的指针的结果? valiable

时间:2015-07-22 11:05:34

标签: c++

我正在尝试理解代码。但我无法理解最后一行? *(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;

2 个答案:

答案 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])