C语言指针详解与应用
指针是间接访问,是地址
数组在存储时是线性存储,连着往下存的
采取小端存储方法:低地址低位字节,高地址高位字节
int 4个字节、short是2个字节,char是一个字节
指针存储的是首地址,因为如果把每一项的地址都存储下来就太多了,因此像上面的内容
int *a=0x4000
一般用于数组,保证地址是合法的(保证已经给这个地址分配了内存):对于p++或者p--来说,增加/减少一个数据类型表示看p是那种类型的*,如果是int*,那就增加/减少4个字节,以此类推
首先将a存储内容的地址赋值给p,之后在a处的内容是66,而a存储的地址是62fe47,通过小端存储的方法,分别存储47、fe、62,之后对于*p表示取出在p下的内容(表示地址),转到该地址下的内容
同样可以用数组引用下标来实现
数组等效与指针
1、传递函数
(1)通过传递地址参数,,避免内存占用
(2)通过指针可以使得函数传回多个变量值,使得max和count变量均有变化,等效于传回2个值,打破C语言只能有一个返回值的问题
2、传递返回值
切记返回的值一定是全局变量,如果是局部变量,由于局部变量在返回后已被销毁,返回的是无效位,
3、读取ID号,就可以借助51单片机来实现,这部分在之前32上也实践过,就不在这里展示了
复杂格式的转换:如果在单片机中打算发送一个float的字符,可以先将其强制转换成char *字符串类型发送,在接收到之后在将其转换为float字符