this is my struct :
struct Node { struct Node* data; struct Node* links[4]; }
assuming there is no padding, does Node->links[-1] guaranteed to be pointing on Node::data ?
Node->links[-1]
Node::data
A union might help you here. Something like this:
union
struct Node { union { Node *data; struct { Node *lnk[5]; } links; } }