单片机交流
直播中

李玉兰

7年用户 1460经验值
私信 关注
[问答]

在keil中单片机C编程的指针与变量有何关系

在keil中单片机C编程的指针与变量有何关系?指针自身地址和指针所指地址分别是什么?

回帖(1)

王建国

2021-10-19 10:48:57
  指针与变量
  注: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的地址。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分