Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2007, 11:31   #1
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию Почему так?

Всем доброго времени суток!

Итак, не так давно я начал изучать язык С++. В одной
книге мне встретился следующий код:
Код:
...
struct Node{ //двунаправленный линейный список (с этим понятно)
 int d;
 Node *next;
 Node *prev;
}
...
Node * first(int d);
Node * find(Node * const pbeg, int d); //здесь?
bool remove(Node **pbeg, Node **pend, int key); //вот здесь?

...
void main(void)
{
 Node *pbeg = first(1);
 Node *pend = pbeg;
 ...
}
...
Node * find(Node * const pbeg, int d);
{
 Node *pv = pbeg;
 while(pbeg) {
   ...
   pv=pv->next;
 }
 return pv;
}
...
bool remove(Node **pbeg, Node **pend, int key); //тут
{
 ... //не важно
 retrun true;
}
Посмотрев на функции "remove" и "find", не могу понять, почему
в одной в качестве параметра указатель на указатель(?: прав ли я?),
а в другом (где Node * const) используется указатель?

З.Ы. Всем заранее спасибо!
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 03.07.2007, 11:41   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

В одном, а точнее в remove, используется указатель на указатель, т.к. он может и должен быть изменён (аналог var в паскале). Можно вполне выло там написать &* вместо ** и ёщё пришлось бы в теле функции поправлять указатели.
В find используется КОНСТАНТНЫЙ УКАЗАТЕЛЬ, чтобы запретить в теле функции менять его.
Carbon вне форума Ответить с цитированием
Старый 03.07.2007, 11:57   #3
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Большое спасибо за ответ, Carbon.

Если я правильно понял, то здесь изменяется сам
указатель? (точнее указатели начала и конца списка в remove)
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему так происходит? Zeraim Общие вопросы Delphi 1 05.05.2008 14:10
Почему у мну ошибка??? Altera Общие вопросы Delphi 4 09.03.2008 09:29
почему не находит??? vipER Общие вопросы C/C++ 1 26.09.2007 14:26
Почему не работает код? Kashp Общие вопросы Delphi 3 09.08.2007 17:33
Почему? Sota О форуме и сайтах клуба 4 26.07.2007 16:26