我對處理指針有什麼誤解?
我有CAN1_msg_t緩衝區與輸入/輸出指針
我想將pCAN1RxMsg指針設置爲eq。 c1rxbuf-> buf [0]在我的CAN1GetPtr()函數中。如何在函數中設置C指針指向數組
struct CAN1_msg_t {
uint8_t flags;
uint32_t id;
uint8_t data[8];
};
struct can1_buf_st
{
unsigned int in; // In Index
unsigned int out; // Out Index
struct CAN1_msg_t buf[100]; // Buffer
};
int CAN1GetPtr(struct CAN1_msg_t *pcan)
{
struct can1_buf_st *p = &c1rxbuf;
pcan = &(p->buf[p->out++]);
return 1;
}
static struct can1_buf_st c1rxbuf = { 0, 0, };
void main()
{
struct CAN1_msg_t *pCAN1RxMsg;
if(CAN1GetPtr(pCAN1RxMsg)) {
if((*pCAN1RxMsg).id == 0x100) {
(...)
}
}
}
當你傳遞'T * pcan'時,你不能改變'pcan'本身的值,因爲它是按值傳遞的,但是你也可以改變它所指向的值,也就是'* pcan'的值。 – zoska
閱讀[需要指針的指針](http://stackoverflow.com/questions/18306935/need-of-pointer-to-pointer/18307020#18307020) –