Как сделать шаг указателя на 1 байт, а не 1 единицу

У меня есть структура tcp_option_t, которая является N байтами. Если у меня есть указатель tcp_option_t* opt, и я хочу, чтобы он был увеличен на 1, я не могу использовать opt++ или ++opt, так как это будет увеличиваться на sizeof(tcp_option_t), что равно N.

Я хочу переместить этот указатель только на 1 байт. Мое текущее решение

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

но это немного хлопотно. Есть ли лучшие способы?

Ответ 1

Я бы предложил вам создать указатель char и использовать его для поперечной структуры.

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

когда вам нужно восстановить свою структуру снова, из ptr, просто выполните обычный бросок:

opt = (tcp_option_t *) ptr;