[英]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.