程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 單片機中C語言指針與變量

單片機中C語言指針與變量

編輯:關於C

指針與變量

 

注: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的地址。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved