指標常用重點速記 :
&: 把變數的地址取出來
INT* p : 意思是指標變數,該變數名稱叫p,只能用來放置INT型態變數的指標(也就是地址),型態變數是甚麼,就能放置什麼型態的地址,切記指標變數只能放地址
(unsigned int*) : 代表強制將數值轉換成地址,也就是強制轉型成指標型態
*p表示指向p這個變數的裡面的東西(圖片比較好說明,B全為大寫)
箭頭(->)和點(.)的差異
相同點:兩者都是二元操作符,而且右邊的運算元都是成員的名稱。
不同點:點運算子( . )的左邊運算元是一個結果為結構的表示式;
箭頭運算子( -> )的左邊的運算元是一個指向結構體的指標。
參考網址: https://www.itread01.com/content/1544015299.html
第12行要注意一個觀念,宣告指標變數不代表裡面已經有地址了,就好比宣告一個INT a;不等於a裡面已經有你想要的數值了。
第三行: GPIO_TypeDef 已經是一個資料型態了,用這個型態宣告了一個變數x
補充: x是GPIO_TypeDef這個型態變數在記憶體內騰出一個空間叫x,所以如果想寫x.CRL來更改記憶體位址是沒有意義的,因為這只是把原本結構裡面的成員放到新的變數裡面,然後再做運算而已
第七行: 用GPIO_TypeDef 這個型態來宣告一個指標變數GPIOB_adr , 因為裡面是寫(GPIO_TypeDef *) GPIOB_BASE,意思是強制將GPIOB_BASE從數值轉變成地址
第9跟11行: 兩行的意思是一樣的,第九行的(*GPIOB_adr)表示的是GPIOB_adr裡面的東西,也就是x 。第11行就是用->的寫法,直接用指標來取出CRL的數值
第10跟12行的意思是一樣的
留言列表