如何使指针增加1个字节,而不是1个单位

时间:2013-05-16 02:28:09

标签: c pointers increment

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

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

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

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

1 个答案:

答案 0 :(得分:12)

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

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

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

opt = (tcp_option_t *) ptr;