C 如何使指针增量为1字节,而不是1个单位
我有一个结构C 如何使指针增量为1字节,而不是1个单位,c,pointers,increment,C,Pointers,Increment,我有一个结构tcp\u option\t,它是N字节。如果我有一个指针tcp\u option\u t*opt,我希望它增加1,我不能使用opt++或++opt,因为这将增加sizeof(tcp\u option\u t),即N 我只想将此指针移动1个字节。我目前的解决办法是 opt = (tcp_option_t *)((char*)opt+1); 但这有点麻烦。有更好的方法吗?我建议您创建一个char指针,并使用它横穿结构 char *ptr = (char*) opt; ++ptr; /
tcp\u option\t
,它是N
字节。如果我有一个指针tcp\u option\u t*opt
,我希望它增加1,我不能使用opt++
或++opt
,因为这将增加sizeof(tcp\u option\u 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;
这可能是唯一的解决办法。你真的不想这么做……或者,也许,你到底为什么认为你想这么做(因为你真的不想这么做!)?不,这正是正确的方法。但你为什么要这么做?