单片机中C语言指针与变量

[复制链接]
查看5655 | 回复0 | 2017-8-28 14:42:25 | 显示全部楼层 |阅读模式

若指针没有指向提前声明的变量,会产生混乱
eg:
情景一:              情景二:
Type *p,*q;           Type *p,*q,pp,qq;
给指针p赋值;              p=&pp;
给指针q赋值;              q=&qq;


p或q的值会出问题         正常,没问题(Type为一结构体)


结论:情景二中,是指针使用的规范过程,先分配了变量,然后指针指向变量。
情景一中则没有定义变量,直接用指针操作,出现错误,猜测:因为指针只是用来存储变量的地址,现在即没有定义变量,那么给指针所赋的值在内存中可能是随机存储,然后指针指向他们时会出现混乱。




关于指针自身地址和指针所指地址
keil中单片机C编程


rf_packet_info *buff,buffer;


uart_sendbyte(buff);  uart_sendbyte(&buff);  uart_sendbyte(&buffer);
buff=&buffer;
uart_sendbyte(buff);  uart_sendbyte(&buff);  uart_sendbyte(&buffer);


烧写后第一次运行串口结果:
03                      21                      27
27                      21                      27
第一次之后的输出结果:
27                      21                       27
27                      21                       27


结论:uart_sendbyte(buff) 指针buff内所存的内容,即所指变量的地址,在指向变量前是随机值;
uart_sendbyte(&buff)  指针自身的地址;
uart_sendbyte(&buffer)  变量buffer的地址。

注:keil中单片机C编程
您需要登录后才可以回帖 登录 | 注册

本版积分规则