Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что означает оператор -> в C++ ?

.pure Знаток (467), закрыт 14 лет назад
при использовании классов и структур используется... объясните что он конкретно делает, пожалуйста...

например:
struct list
{
int data;
list *next;
list *prev;
}; list *cur=0;

и далее

AddAfterCur(int elem)
{
list *tmp;
tmp=new list;

tmp->data=elem;
tmp->next=cur->next;
tmp->prev=cur->prev;
...
}
последние три строчки непонятны...((
Дополнен 14 лет назад
Григорий Суслов, можно попродробнее?

tmp->data=elem;
в этой строке мы присвоили элементу data переменной tmp типа list значение elem, я правильно понял?

tmp->next=cur->next;
tmp->prev=cur->prev;
а вот здесь мы next и prev присваиваем значение cur? зачем потом ещё один оператор -> ?
Лучший ответ
Tyranel Ученик (140) 14 лет назад
Григорий не вполне прав. Применение операторов зависит не от расположения переменной в куче/стеке, а от того, идет ли работа над указателем или над значением. Для получения элемента структуры используется точка. А операто -> применяется для разыменовывания указателя и получения элемента структуры.
Так, запись (a->b) эквивалентна (*a).b
Остальные ответы
Krab Вark Оракул (56992) 14 лет назад
Обращение к элементу структуры по указателю на нее.
*МАИС* Мастер (2129) 14 лет назад
Обращение к элементу !
Мозг Просветленный (45410) 14 лет назад
Он типа как и оператор точка, только используется для доступа к членам структуры или класса на динамически выделенную память, а точка при статическом выделении. У тебя объявлен указатель на объект структуры *tmp, и есть ключевое слово new, что свидетельствует о динамическом выделении памяти. Вот поэтому и стрелочка, а не точка.
Если бы было так
list tmp;
то нужно было бы обращаться к элементам структуры так
tmp.data например.
Кстати, когда объект структуры станет ненужным, надо освободить занимаемую им память так delete tmp;
Похожие вопросы