不知何故,这些指针算术对我来说非常混乱。 一个例子:
uint16_t *a = (uint16_t *)0x200;
a += 4 * sizeof(uint32_t);
在计算a的新值时,您的思维过程是什么?
这就是我试图解决的问题:
答案 0 :(得分:2)
指针运算以指向的类型为单位。
因此,如果您刚刚++a;
,a
的新值将是0x202
,不是 0x201
。
因此,当您添加4 * sizeof (uint32_t)
时,这与添加2 * 4 * 4
相同,即32,即十六进制0x20
。因此新值为0x220
。