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

问题描述 投票:0回答:2

我有一个结构

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

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

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

但是有点麻烦。还有更好的办法吗?

c pointers increment
2个回答
18
投票

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

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

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

opt = (tcp_option_t *) ptr;

0
投票

我知道这篇文章很旧,但我有同样的问题并找到了这个解决方案: char ptr = (char) &opt; ++(*ptr); // 将 opt 增加一个字节 无需恢复结构 这适用于 Visual Studio 2005。我希望它适用于所有编译器

© www.soinside.com 2019 - 2024. All rights reserved.