С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
aryego
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 3
#1

Ссылка на указатель в аргументе функции - C++

11.10.2011, 18:48. Просмотров 1213. Ответов 3
Метки нет (Все метки)

при изучении примеров реализации бинарного дерева(в функции добавления нового узла)я увидел,что есть как такой вариант,когда аргумент функции просто указатель:
(http://www.cprogramming.com/tutorial/lesson18.html)
C++
1
2
3
4
5
6
7
8
9
10
11
void btree::insert(int key, node *leaf)
{
  if(key< leaf->key_value)
  {
    if(leaf->left!=NULL)
     insert(key, leaf->left);
    else
    {
     ......
    }
}
так и такой(http://smccd.net/accounts/grasso/dstruct/assign/filesc/TreeType.cpp)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Insert(TreeNode*& tree, ItemType item)
// Inserts item into tree.
// Post:  item is in tree; search property is maintained.
{
  if (tree == NULL)
  {// Insertion place found.
    tree = new TreeNode;
    tree->right = NULL;
    tree->left = NULL;
    tree->info = item;
  }
  else if 
{....}
Вопрос :почему во 2-м случае применяется ссылка на указатель?
И вообще,кто-нибудь может об'яснить,когда ее применять и в чем ее отличие и преимущество перед двойным указателем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 18:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылка на указатель в аргументе функции (C++):

Чем отличаются указатель в теле функции и в аргументе - C++
Здравствуйте. Не могу разобраться чем, в данном случае: bool LexAnalysis(const char* text) { const char *str = text; const char...

Указатель = 0 в аргументе конструктора - C++
Не знал даже как тему назвать. :D Прошу пояснить такой момент, не в первый раз встречаю, но гугл мне не объяснил. Для чего, иногда в...

Указатель/ссылка в параметре функции - C++
Здравствуйте. Опять появился вопрос. Почему автор книги, которую я читаю, постоянно использует в параметрах функции ссылку/указатель и...

Указатель или ссылка на указатель. В чем разница? - C++
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Ошибка в аргументе функции - C++
Доброго времени суток. В университете дали такое задание: Составить программу на основе ветвления, концепция задачи такова: ...

Ссылка на указатель на указатель - C++
void TEST( int **&amp;refptr, int const &amp;N); int main() { int const N = 10; int i{ 0 }, b{ 2 }, *ptr{ &amp;i, &amp;b }; ...

3
bazile
63 / 39 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
11.10.2011, 19:06 #2
Ссылка на указатель убирает лишний уровень косвенности при обращении к такой переменной и позволяет писать более "чистый" код, а также дает возможность изменить указатель в месте вызова.
0
aryego
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 3
11.10.2011, 19:23  [ТС] #3
А что такое "убрать лишний уровень косвенности"-можно пояснить ма примерах?
И чем,например код во втором примере,который я привел чище первого?
А изменять указатель можно и при двойном указателе,чем же ссылка лучше?
0
palva
2692 / 1919 / 288
Регистрация: 08.06.2007
Сообщений: 7,063
Записей в блоге: 4
12.10.2011, 00:34 #4
Вот так пришлось бы написать второй пример без использования ссылки.
Код
void Insert(TreeNode** tree, ItemType item)
// Inserts item into tree.
// Post: item is in tree; search property is maintained.
{
if (*tree == NULL)
{// Insertion place found.
*tree = new TreeNode;
*tree->right = NULL;
*tree->left = NULL;
*tree->info = item;
}
0
12.10.2011, 00:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2011, 00:34
Привет! Вот еще темы с ответами:

Программа для вычисления квадратного корня. Ошибка компиляции в аргументе функции - C++
Всем привет, программа для вычисления квадратного корня. Не компилируется из за вызова функции вычисления кв корня. Ругается на аргументы. ...

Указатель и ссылка - C++
В общем вопрос достаточно простой, в чём разница указателя и сылки? С одной стороны указатель это отдельный тип, отдельная ячейка в...

Ссылка на указатель - C++
Почему не работает такая конструкция? void SwapInt(void* p1, void* p2) { int* &amp; tmp=static_cast&lt;int*&gt;(p2); } и как...

Указатель и ссылка - C++
Почему выгодней использовать указатель а не ссылку при использовании массивов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.