Tyranel
Ученик
(140)
14 лет назад
Григорий не вполне прав. Применение операторов зависит не от расположения переменной в куче/стеке, а от того, идет ли работа над указателем или над значением. Для получения элемента структуры используется точка. А операто -> применяется для разыменовывания указателя и получения элемента структуры.
Так, запись (a->b) эквивалентна (*a).b
Мозг
Просветленный
(45410)
14 лет назад
Он типа как и оператор точка, только используется для доступа к членам структуры или класса на динамически выделенную память, а точка при статическом выделении. У тебя объявлен указатель на объект структуры *tmp, и есть ключевое слово new, что свидетельствует о динамическом выделении памяти. Вот поэтому и стрелочка, а не точка.
Если бы было так
list tmp;
то нужно было бы обращаться к элементам структуры так
tmp.data например.
Кстати, когда объект структуры станет ненужным, надо освободить занимаемую им память так delete tmp;
например:
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;
...
}
последние три строчки непонятны...((