16

我有一个结构tcp_option_t,即N字节。如果我有一个指针tcp_option_t* opt,并且我希望它增加 1,我不能使用opt++++opt因为它会增加sizeof(tcp_option_t),即N.

我只想将此指针移动 1 个字节。我目前的解决方案是

opt = (tcp_option_t *)((char*)opt+1);

但这有点麻烦。有没有更好的方法?

4

1 回答 1

16

我建议你创建一个 char 指针并用它来横向你的结构。

char *ptr = (char*) opt;
++ptr; // will increment by one byte

当您需要从 ptr 再次恢复您的结构时,只需执行通常的强制转换:

opt = (tcp_option_t *) ptr;
于 2013-05-16T03:51:45.357 回答