我有一个结构
tcp_option_t
,它是N
字节。如果我有一个指针 tcp_option_t* opt
,并且我希望它增加 1,则不能使用 opt++
或 ++opt
,因为这会增加 sizeof(tcp_option_t)
,即 N
。
我只想将此指针移动 1 个字节。我目前的解决方案是
opt = (tcp_option_t *)((char*)opt+1);
但是有点麻烦。还有更好的办法吗?
我建议你创建一个 char 指针并用它来遍历你的结构。
char *ptr = (char*) opt;
++ptr; // will increment by one byte
当您需要再次从 ptr 恢复结构时,只需执行通常的转换:
opt = (tcp_option_t *) ptr;
我知道这篇文章很旧,但我有同样的问题并找到了这个解决方案: char ptr = (char) &opt; ++(*ptr); // 将 opt 增加一个字节 无需恢复结构 这适用于 Visual Studio 2005。我希望它适用于所有编译器