Here is the code in question
#include struct test { unsigned char t; unsigned short u; unsigned char v; }; int main () { s
You have a typed pointer.
So when you increment it my 1 (i.e. a + 1) it means a + sizeof(type).
a + 1
a + sizeof(type)
So a + sizeof(type) = a + sizeof(type) * sizeof(type) = a + 6 * 6 (in your case as sizeof(test) = 6)
a + sizeof(type) * sizeof(type)
a + 6 * 6
That's where you are getting 0x24 or 36 from.
0x24