在C中为一个典型的指针地址分配一个典型的int指针?

时间:2016-08-30 23:58:21

标签: c pointers casting

我不知道我是否正确地提出了这个问题,但是我一直在努力绕过以下几行代码并且无法找到我能回答的答案理解。

#define GPIO_LED  ((uint32_t *)0x510000A0)

*(GPIO_LED ) = (uint32_t *)num;

其中num是一个整数(介于0到255之间)

1 个答案:

答案 0 :(得分:-1)

好。 ((uint32_t *)0x510000A0)是指向uint32_t的类型指针的常量 - 换句话说,是一个显式声明的绝对地址。

*(GPIO_LED ) = (uint32_t *)num;将num中的转换为指向uint32_t的指针,然后使用绝对地址{{在位置指定 1}}。

效果是它将值0x510000A0放入地址num的程序内存空间。

这种技巧通常用于低级编程,将设置放入映射到某些物理设备控制的内存地址。

<强>更新

是的,是的,我迷失在星号中。 0x510000A0指针。