Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使指针增量为1字节,而不是1个单位_C_Pointers_Increment - Fatal编程技术网

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;

这可能是唯一的解决办法。你真的不想这么做……或者,也许,你到底为什么认为你想这么做(因为你真的不想这么做!)?不,这正是正确的方法。但你为什么要这么做?