Редактировать: (добавлено words
, я пропустил тот факт, что было две вложенные структуры, в спешке объяснить различные операторы отсылки...)
т. е. первоначальный ответ был похож на some_long_var = a->wNum;
, который конечно неправильно...
2 попытка ;-)
some_long_var = a->words->wNum;
// or
some_float_var = a->words->weight;
должно помочь.
Поскольку a и b являются указателями, их необходимо сначала разыменовать, прежде чем можно будет получить доступ к их членам. Оператор -> делает обе вещи одновременно.
В качестве альтернативы вы можете сделать что-то вроде
some_long_var = a[0].words->wNum;
(или, возможно, со значением, отличным от 0, в качестве нижнего индекса, если вы ожидаете, что a будет массивом). Дело в том, что в C массивы часто "рассматриваются" как указатели на тип элемента, найденного в массиве, и поэтому оператор массива [] может быть функционально и часто семантически правильным способом разыменование указателя.
Наконец, но это более надуманный (но полезный для понимания семантики различных операторов c), вы можете сделать это в два этапа, при этом оператор * выполняет разыменование, а оператор-член (.) получает желаемую структуру /член класса:
some_long_var = (*a).words->wNum;
person
mjv
schedule
16.11.2009