C语言的一些问题

2019-07-20 22:21发布

我 的理解是    #define GPIOA     ((GPIO_TypeDef *) GPIOA_BASE)
    这句话的意思就是(其实GPIOA_BASE已经是经过计算好的一个地址值,它和GPIOA的寄存器组结构体的首地址是一个值,再经过(GPIO_TypeDef *) GPIOA_BASE就真正让GPIOA_BASE和那个结构体有了联系,再让GPIOA等于这个地址,就可以访问结构体了;)

各位大神们,这句代码能不能这样理解呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
cyg
2019-07-22 08:23
如果指针加一是能够访问到内部变量的,因为这个指针的类型GPIO_TypeDef ,加1的话会向下偏移一个这个结构体大小的地址,也就是如果定义一个指针数组GPIO_TypeDef *  pp[10],那么这个数组就包含10个GPIO_TypeDef 的指针,pp是一个二级指针,pp的是10个结构体指针数组的首地址,也就是第一个指针的指针,加加的话会便宜一个GPIO_TypeDef 大小,也就是会指向第二个指针的指针  。。。。。。自己都扰晕了,大概就是这个意思。

一周热门 更多>