指針與變量
注: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的地址。