亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 解釋#define RCC ((RCC_TypeDef *) RCC_BASE) [打印本頁]

作者: 9geren    時間: 2014-3-26 15:34
標題: 解釋#define RCC ((RCC_TypeDef *) RCC_BASE)
#define RCC  ((RCC_TypeDef *) RCC_BASE)
RCC_TypeDef是一個定義的結(jié)構(gòu)體
RCC_BASE是一個unsigned long(32位數(shù)值)
簡化后是:(int *) 0xb8000000.
明顯,指針是一個存放地址的變量,
int a=1;
int *p=&a;
a與*p是同一個體!
在stm32你是知道RCC寄存器的地址的如0xb8000000,并且目的是用指針指向這個地
很自然會有:
int *p;
p=0xb8000000;
但是0xb8000000是一個整數(shù),編譯器不知0xb8000000是內(nèi)存地址,所以通過強制類型轉(zhuǎn)換將數(shù)字轉(zhuǎn)為合適的地址類型。
則,int *p;
p=(int *)0xb8000000;
這樣P就裝有一個地址,
#define RCC  ((RCC_TypeDef *) RCC_BASE)
RCC  就指向是RCC_BASE這個地址
從RCC_BASE開始,長度為RCC_TypeDef這個類型的長度!
其實
int *p;
p=0xb8000000;

int *p;
p=(int *)0xb8000000;
沒有多大區(qū)別,都實現(xiàn)同樣的功能。
前者由于p是int *類型,所以給p賦值0xb8000000時會作默認類型轉(zhuǎn)換,有些編譯器也許會有警告。但訪問*p時也會得到int型的數(shù)據(jù)。
后者加上了(int *),是做了強制類型轉(zhuǎn)換,消除了潛在的警告。編程思想表述得更清晰。訪問*p同樣是得到int型的數(shù)據(jù)。


作者: 蘭小方    時間: 2017-6-19 15:59
nt a=1; int *p=&a; a與*p是同一個體!    這里錯了  *p你前面存的是a的地址,所以給a分配人的存儲內(nèi)容是1,而*p存儲的是a的地址,不是a的內(nèi)容,所以兩個不是一回事
作者: 蘭小方    時間: 2017-6-19 16:01
總體很好  贊一個
作者: 簫聲欲碎    時間: 2018-1-6 10:36
也就是說:P就是RCC,RCC_Typedef*就相當于int*,RCC_BASE就相當于0xb8000000。 (RCC_TypeDef *) 相當于(int*)強制類型轉(zhuǎn)換。
作者: 簫聲欲碎    時間: 2018-1-6 10:41
#define RCC ((RCC_TypeDef *) RCC_BASE)

int *p;
p=0xb8000000;

RCC 相當于 p;
RCC_TypeDef * 相當于 int*;
RCC_BASE 相當于0xb8000000;

作者: jxchen    時間: 2019-1-20 21:02

下載學習,謝謝分享




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1