Edit: (added words
, I had missed the fact that there were two nested structs, in my rush to explain the various deferencing operators...)
i.e. original response was like some_long_var = a->wNum;
which is of course wrong...
2nd try ;-)
some_long_var = a->words->wNum;
// or
some_float_var = a->words->weight;
should do the trick.
Since a and b are pointers they need to be dereferenced first before their members can be accessed. The -> operator does both things at once.
Alternatively you can do something like
some_long_var = a[0].words->wNum;
(or possibly with value than 0 as the subscript if you expect a to be an array). The point is that in C, arrays are often "seen as" pointers to the type of the element found in the array, and therefore the [] array operator can be a functionally and often semantically correct way of dereferencing a pointer.
Finally, but this is more contrived (but useful for pushing the understanding of the semantics behind various c operators), you can do this in two steps, whereby the * operator does the dereferencing and the member operator (.) gets to the desired struct/class member:
some_long_var = (*a).words->wNum;