16

I have a structure tcp_option_t, which is N bytes. If I have a pointer tcp_option_t* opt, and I want it to be incremented by 1, I can't use opt++ or ++opt as this will increment by sizeof(tcp_option_t), which is N.

I want to move this pointer by 1 byte only. My current solution is

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

but it is a bit troublesome. Are there any better ways?

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
misteryes
  • 2,167
  • 4
  • 32
  • 58

1 Answers1

18

I'd suggest you to create a pointer of char and use it to transverse your struct.

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

when you need to restore your struct again, from ptr, just do the usual cast:

opt = (tcp_option_t *) ptr;
Amadeus
  • 10,199
  • 3
  • 25
  • 31