結構體成員是u8,結構體指標,函式指標。呼叫函式指標的時候,另外兩個成員地址會被改變,代碼如下。第一次發貼有什么沒做好的地方請見諒
,謝謝了。1.結構體原型和初始化:
typedef struct
{
uint8_t enableCRC; //crc校驗使能
UartBuff* buff; //串口接識訓沖資料
void (*Send)(uint8_t* ,uint16_t ); //串口發送函式
}UartPort;
UartPort uart2={false , &uart2Buff , Uart2SendStr};
2.Uart2SendStr原型:
void Uart2SendStr(uint8_t *pstr,uint16_t strlen)
{
uint16_t i;
for(i=0;i<strlen;i++)
Uart2SendByte(pstr[i]);
}
3.函式呼叫:
void debug(UartPort* uart)
{
...
uart->Send("123",3);
...
}
函式呼叫前測驗,另外兩個成員地址正常,呼叫后地址變成0x3300,0x0031。
uj5u.com熱心網友回復:
有可能的問題點或者測驗思路,也希望能提供一下
uj5u.com熱心網友回復:
貼一下比較完整的代碼看看uj5u.com熱心網友回復:
說清楚,什么叫另外兩個,啥叫正常。分別說清變數名,原值,變成什么了。
另外初始化時用到的uart2Buff是個什么東西,在哪定義的。
uj5u.com熱心網友回復:
莫名其妙變化這種事,疑似回傳auto區域變數地址造成的。uj5u.com熱心網友回復:
指標太多,不說請呼叫鏈,一不小心哪個就是野指標了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256894.html
標籤:C語言
上一篇:C語言檔案使用方式
下一篇:SPFA最短路求負環
