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

mis*_*yes 14 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);
Run Code Online (Sandbox Code Playgroud)

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

Ama*_*eus 13

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

char *ptr = (char*) opt;
++ptr; // will increment by one byte
Run Code Online (Sandbox Code Playgroud)

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

opt = (tcp_option_t *) ptr;
Run Code Online (Sandbox Code Playgroud)