注:keil中單片機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)錯誤,猜測:因為指針只是用來存儲變量的地址,現(xiàn)在即沒有定義變量,那么給指針所賦的值在內(nèi)存中可能是隨機存儲,然后指針指向他們時會出現(xiàn)混亂。
關(guān)于指針自身地址和指針所指地址
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);
燒寫后第一次運行串口結(jié)果:
03 21 27
27 21 27
第一次之后的輸出結(jié)果:
27 21 27
27 21 27
結(jié)論:uart_sendbyte(buff) 指針buff內(nèi)所存的內(nèi)容,即所指變量的地址,在指向變量前是隨機值;
uart_sendbyte(&buff) 指針自身的地址;
uart_sendbyte(&buffer) 變量buffer的地址。