数组和指针容易犯的错误

举例:

错误示范:

UINT8 mem_buf[8192];
INT32 mem_len = sizeof(mem_buf);

ret = dlt698_shortframe_decode(recv_frm_buf, len, &recv_frm, &recv_apdu, (VOID **)&mem_buf, &mem_len);

这里需要注意的是:&mem_buf   等同于 &mem_buf[0]   并等同于 mem_buf ,这里的本意是(VOID **)&mem_buf  是双指针指向数组的首地址,但是如果填写&mem_buf  这仅仅是单指针。故需要转换一下如下:

正确示范:

UINT8 mem_buf[8192];
UINT8 *pmem_buf = mem_buf;
INT32 mem_len = sizeof(mem_buf);

ret = dlt698_shortframe_decode(recv_frm_buf, len, &recv_frm, &recv_apdu, (VOID **)&pmem_buf, &mem_len);

INT32 dlt698_shortframe_decode(UINT8* frame_buff, INT32 frame_len, Dlt69845Frame_t** out_frame, Apdu_t** out_apdu, void** membuff, INT32 *membuff_len)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值