C语言的一些问题

2019-07-20 22:21发布

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

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
cyg
1楼-- · 2019-07-21 12:43
未来,我来 发表于 2016-5-8 15:56
那我的理解差不多是准确的,是不是

是的
庄健宇
2楼-- · 2019-07-21 17:02
那是不是结构体里的其他变量就可以通过指针加1依次进行访问?
xinxian
3楼-- · 2019-07-21 20:27
 精彩回答 2  元偷偷看……
qingyu111
4楼-- · 2019-07-21 22:13
 精彩回答 2  元偷偷看……
zhao305149619
5楼-- · 2019-07-22 03:32
xinxian 发表于 2016-5-9 10:35
是,是指针加一,地址的话,要看看偏移地址,库写的很讲究,真的值得学习

指针加一不是访问里面的变量吧?!!!!
cyg
6楼-- · 2019-07-22 08:23
如果指针加一是能够访问到内部变量的,因为这个指针的类型GPIO_TypeDef ,加1的话会向下偏移一个这个结构体大小的地址,也就是如果定义一个指针数组GPIO_TypeDef *  pp[10],那么这个数组就包含10个GPIO_TypeDef 的指针,pp是一个二级指针,pp的是10个结构体指针数组的首地址,也就是第一个指针的指针,加加的话会便宜一个GPIO_TypeDef 大小,也就是会指向第二个指针的指针  。。。。。。自己都扰晕了,大概就是这个意思。

一周热门 更多>