單片機(jī)中C語(yǔ)言指針與變量
注:keil中單片機(jī)C編程
若指針沒(méi)有指向提前聲明的變量,會(huì)產(chǎn)生混亂
eg:
情景一: 情景二:
Type *p,*q; Type *p,*q,pp,qq;
給指針p賦值; p=&pp;
給指針q賦值; q=&qq;
p或q的值會(huì)出問(wèn)題 正常,沒(méi)問(wèn)題(Type為一結(jié)構(gòu)體)
結(jié)論:情景二中,是指針使用的規(guī)范過(guò)程,先分配了變量,然后指針指向變量。
情景一中則沒(méi)有定義變量,直接用指針操作,出現(xiàn)錯(cuò)誤,猜測(cè):因?yàn)橹羔樦皇怯脕?lái)存儲(chǔ)變量的地址,現(xiàn)在即沒(méi)有定義變量,那么給指針?biāo)x的值在內(nèi)存中可能是隨機(jī)存儲(chǔ),然后指針指向他們時(shí)會(huì)出現(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的地址。