关于指针和结构体的一点教训

Posted bai2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于指针和结构体的一点教训相关的知识,希望对你有一定的参考价值。

在DMA控制中,我使用了这样的一部分代码,想实现从内存到外设 的数据搬运。

技术分享图片

后来经过仔细查证,发现了指针的一些基础不牢。现总结如下:

 

图中的外设地址写的为USART1,其地址为0x40011000,而变量USART1_BASE也为0x40011000。但是USART1为将USART1_BASE强制转换的结构体指针。下图中有相应的定义。

技术分享图片

虽然USART1是指向和USART1_BASE相同的位置。但性质不同,更重要是后面加的数值不同。

有如下代码解释。

技术分享图片

 

技术分享图片

 

后来分析一下,原因不言而遇,很明显了。

以上是关于关于指针和结构体的一点教训的主要内容,如果未能解决你的问题,请参考以下文章

ue4 关于创建动态结构体的一点思考

关于C语言中函数修改结构体的值的问题

一个教训

关于C++模版的一个问题求教,如果取模板类内的一个结构体的指针。

在程序中用typedef定义结构体

Go语言中的结构体