STM32指针的理解
扫描二维码
随时随地手机看文章
指针的定义:
自己总结为,指针是用来存放某种类型变量的地址的变量
比如 unit8 * p = 0x5555 5555
指针p 表示用来存放 unit8类型变量的地址的变量
*指针是变量
*指针是存放地址的变量
*指针是存放某种类型变量的地址的变量
百度上定义说:
它的值直接指向(points to)存在电脑存储器中另一个地方的值。
上例子中 *p 就表示0x5555 5555这个地址中存放的数
指针定义的格式:(数据类型+星号)+变量名称
比如下面两个例子
int * xxx
YYY * xxx
指针的含义:此时xxx这个变量就成为一个指针,这个指针指向这种数据类型的首地址
指针的使用:
typedef struct{
__IO uint32_t AAA;
__IO uint32_t BBB;
__IO uint32_t CCC;
__IO uint32_t DDD;} YYY; 先用个结构体来说明
YYY->AAA 就表示 变量AAA存放的内容
YYY.AAA 也是一样,不同的表达方式
注意事项:
在STM32中指针是4个字节增加的,比如一个指针是0x4001 2000
不论里面放的是什么数,那么下一个指针就是 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 中是空的。