Доступ к структуре через указатели [c] - PullRequest
2 голосов
/ 01 апреля 2010

У меня есть структура, которая содержит имена и возраст. Я сделал связанный список этих структур, используя это как указатель:

aNode *rootA;

в моей главной. Теперь я отправляю ** rootA в функцию, подобную этой

addElement(5,"Drew",&rootA);

Поскольку мне нужно передать rootA по ссылке, чтобы я мог редактировать его в других функциях (в моей настоящей программе у меня есть два корня, поэтому return не будет работать)

Проблема в том, что в моей программе я не могу сказать доступ к членам структуры.

*rootA->age = 4;

например не работает.

Надеюсь, вы, ребята, сможете мне помочь. Спасибо!

Ответы [ 2 ]

6 голосов
/ 01 апреля 2010

Трудно сказать по вашему вопросу, но похоже, что тип rootA в последнем примере - aNode**. Если это так, то причина его неудачи в том, что -> имеет более высокий приоритет, чем *. Вам нужно использовать парен, чтобы исправить эту проблему

(*rootA)->age = 4;

См. Полный Таблица приоритетов операторов .

Если вместо aNode* указан тип *1013*. Тогда вам не нужно разыменовывать в дополнение к использованию ->. Вместо этого просто используйте -> напрямую

rootA->age = 4;
0 голосов
/ 01 апреля 2010

Я подозреваю, что вам нужно передать указатель на переменную rootA, а не разыменовывать его дважды.

addElement(5,"Drew",&rootA);
...