單片機(jī)中C語言指針與變量
注:keil中單片機(jī)C編程
若指針沒有指向提前聲明的變量,會產(chǎn)生混亂
eg:
情景一: 情景二:
Type *p,*q; Type *p,*q,pp,qq;
給指針p賦值; p=&pp;
給指針q賦值; q=&qq;
p或q的值會出問題 正常,沒問題(Type為一結(jié)構(gòu)體)
結(jié)論:情景二中,是指針使用的規(guī)范過程,先分配了變量,然后指針指向變量。
情景一中則沒有定義變量,直接用指針操作,出現(xiàn)錯(cuò)誤,猜測:因?yàn)橹羔樦皇怯脕泶鎯ψ兞康牡刂?,現(xiàn)在即沒有定義變量,那么給指針?biāo)x的值在內(nèi)存中可能是隨機(jī)存儲,然后指針指向他們時(shí)會出現(xiàn)混亂。
關(guān)于指針自身地址和指針?biāo)傅刂?br/>keil中單片機(jī)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);
燒寫后第一次運(yùn)行串口結(jié)果:
03 21 27
27 21 27
第一次之后的輸出結(jié)果:
27 21 27
27 21 27
結(jié)論:uart_sendbyte(buff) 指針buff內(nèi)所存的內(nèi)容,即所指變量的地址,在指向變量前是隨機(jī)值;
uart_sendbyte(&buff) 指針自身的地址;
uart_sendbyte(&buffer) 變量buffer的地址。