Как сделать шаг указателя на 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;