繁体   English   中英

如何向 C 中的指针添加偏移量?

[英]How can add an offset to a pointer in C?

我正在修改微控制器的固件。 我有两个 RxBuffers,我打算添加第三个,所以我打算使用相同的例程来解析它们。 问题是其中一个与其他的偏移量不同。 例子:

RxBuffer1="#DATA,1,5,5,8"
RxBuffer2="DATA,1,5,5,8" //<-Different offset
RxBuffer3="#DATA,1,5,5,8"

void ParseData(char *xBuffer)
{
     //Parse data starting at xBuffer +1
}

ParseData例程用于解析RxBuffer1格式而不是RxBuffer2格式的数据。 #在此级别上不以任何方式使用。 我应该如何传递地址以使ParseData正确获取RxBuffer2的地址? 我认为应该是RxBuffer2-1 也许ParseData(RxBuffer2-1)

传递RxBuffer2 - 1将是未定义的行为。 相反,您应该制作一个需要RxBuffer2格式的 function,并且也许重构旧的 function 以使用这个新的 function:

void ParseActualData(char *xBuffer)
{
    // expects `DATA`
}

void ParseData(char *xBuffer)
{
    // expects `#DATA`
     ParseActualData(xBuffer + 1);
}

或者,如果解析逻辑允许,您可以让ParseData接受这两种变体并根据第一个字符确定要做什么(例如,如果第一个字符是#则跳过它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM