我对处理指针有什么误解?
我有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) –