gpt4 book ai didi

c - 如何在函数中将C指针设置为数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:35 25 4
gpt4 key购买 nike

我对处理指针有什么误解?
我有带输入/输出指针的 CAN1_msg_t 缓冲区
我想将 pCAN1RxMsg 指针设置为 eq。我的 CAN1GetPtr() 函数中的 c1rxbuf->buf[0]。

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) {
(...)
}
}
}

最佳答案

改变:

int CAN1GetPtr(struct CAN1_msg_t *pcan)
{
struct can1_buf_st *p = &c1rxbuf;

pcan = &(p->buf[p->out++]);

return 1;
}

收件人:

int CAN1GetPtr(struct CAN1_msg_t **pcan)
{
if (c1rxbuf.out < sizeof(c1rxbuf.buf)/sizeof(*c1rxbuf.buf))
{
*pcan = &c1rxbuf.buf[c1rxbuf.out++];
return 1;
}
return 0;
}

然后在函数 main 中,将 CAN1GetPtr(pCAN1RxMsg) 更改为 CAN1GetPtr(&pCAN1RxMsg)

关于c - 如何在函数中将C指针设置为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com