×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-06 发布时间:
|

注:keil中单片机C编程 


若指针没有指向提前声明的变量,会产生混乱 
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的地址。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
无人机新突破:或将利用手机发射塔追踪无人机