【发布时间】:2016-05-15 17:33:49
【问题描述】:
我正在学习C。我开始理解指针和类型转换。我正在遵循一些指南和示例,并且遇到了这个声明:
uint32_t *sp;
...
*(uint32_t*)sp = (uint32_t)somevalue;
这里发生了什么?第一个星号对我来说是个谜。
【问题讨论】:
-
第一个演员表是多余的。如果它是某个正整数,也可能是第二个。
-
强制转换为
uint32_t*是不必要的,因为它已经与sp相同,所以代码等同于*sp = (uint32_t)somevalue;(这使它看起来不那么神奇)。 -
显然作者讨厌他的编译器,更喜欢不进行自动类型检查。 IOW:阅读其他代码进行学习。
标签: c pointers casting dereference