У меня есть структура 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;
Похожие вопросы
Связанные вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.