指針的定義:
自己總結(jié)為,指針是用來存放某種類型變量的地址的變量
比如 unit8 * p = 0x5555 5555
指針p 表示用來存放 unit8類型變量的地址的變量
*指針是變量
*指針是存放地址的變量
*指針是存放某種類型變量的地址的變量
百度上定義說:
它的值直接指向(points to)存在電腦存儲器中另一個(gè)地方的值。
上例子中 *p 就表示0x5555 5555這個(gè)地址中存放的數(shù)
指針定義的格式:(數(shù)據(jù)類型+星號)+變量名稱
比如下面兩個(gè)例子
int * xxx
YYY * xxx
指針的含義:此時(shí)xxx這個(gè)變量就成為一個(gè)指針,這個(gè)指針指向這種數(shù)據(jù)類型的首地址
指針的使用:
typedef struct{
__IO uint32_t AAA;
__IO uint32_t BBB;
__IO uint32_t CCC;
__IO uint32_t DDD;} YYY; 先用個(gè)結(jié)構(gòu)體來說明
YYY->AAA 就表示 變量AAA存放的內(nèi)容
YYY.AAA 也是一樣,不同的表達(dá)方式
注意事項(xiàng):
在STM32中指針是4個(gè)字節(jié)增加的,比如一個(gè)指針是0x4001 2000
不論里面放的是什么數(shù),那么下一個(gè)指針就是 0x4001 2004
比如
uint8 i[5] = {0X11,OX22,OX33,OX44,OX55}
&i = 0X4001 2000
那么 i[0] = *0X4001 2000
i[1] = *0X4001 2004
i[2] = *0X4001 2008
i[3] = *0X4001 200C
i[4] = *0X4001 2010
而 0x4001 2001~0x4001 2003 中是空的。