【发布时间】:2017-07-26 09:18:24
【问题描述】:
这一行定义了 avr 微控制器中 DDRD 寄存器的地址
#define myDDRD *((volatile unsigned char* const) 0x31)
能否请您澄清一下在上述行中如何使用指针? 为什么我们需要第一个星号?第二个不应该足以指向地址 0x31 吗?
【问题讨论】:
-
它是一个
const指向volatile unsigned char的指针。如果您只是在阅读方面需要帮助。 -
星号
*在不同的范围内可以表示不同的东西。如果用作二元运算符,它可能意味着乘法。这可能意味着指针用于类型(如类型转换(volatile unsigned char* const))。或者,如果用作一元运算符,它可能意味着 取消引用指针(这是使用“第一个”星号发生的情况)。 -
@user247954 这是一个外部资源。但有人已经为您完成了这项工作。
-
@AjayBrahmakshatriya 我明白了,但第二个星号不应该足以定义这个指针吗?为什么我们需要 2 个星号?
-
它没有将宏定义为地址。该宏在代码中被左值替换。
标签: c pointers avr atmega avr-gcc