Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
h0las_qq
0 / 0 / 0
Регистрация: 26.12.2015
Сообщений: 15
1

Зачем нужен указатель на указатель при работе с однонаправленным списком?

19.03.2016, 16:24. Просмотров 499. Ответов 2
Метки нет (Все метки)

День добрый. Столкнулся с непониманием этой темы. В частности, совершенно непонятен алгоритм инициализации такого вот списка. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
//создание однонаправленного списка (добавления в конец)
void Make_Single_List(int n,Single_List** Head){
  if (n > 0) {
    (*Head) = new Single_List();
    //выделяем память под новый элемент
    cout << "Введите значение ";
    cin >> (*Head)->Data;
    //вводим значение информационного поля
    (*Head)->Next=NULL;//обнуление адресного поля
     Make_Single_List(n-1,&((*Head)->Next));
  }
}
Не понимаю, почему передаем в функцию именно двойной указатель на структуру? Почему нельзя передать просто указатель *Head и работать с ним? И почему потом в рекурсии передаем указатель *Head по ссылке? Был бы очень признателен, если кто-то мог прояснить эти моменты.

Добавлено через 1 час 18 минут
Только написал и, кажется, наконец-таки таки нашел ответ. **Head - используется для передачи указателя *Head по ссылке. То есть, если мы хотим изменить нашу структуру, как в этом случае, добавив к ней еще элементы, мы должны передать ей эл-т по ссылке. Вот только как-то интересно получается... Ведь если мы передаем по указателю в функцию обычную переменную, она уже должна меняться, для того и передаем по указателю, собственно. Почему тогда структура таким образом не изменяется? Это конкретная особенность структур? Если так, то и на второй вопрос ответ ясен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2016, 16:24
Ответы с готовыми решениями:

Чем отличаются указатель на строку и константный указатель на строку?
Просто обьясните, как такое возможно? char *a=&quot;fff&quot;; В чем отличие от этого?...

Указатель this
как в windows Forms // горячую клавишу?

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

Указатель на функцию
Доброго времени суток! Кто может посоветовать способ присвоить указателю на...

friend указатель
Есть ли что-то типа этого в стандарте: class A { protected: double a; ...

2
pav1uxa
1857 / 1711 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
20.03.2016, 09:44 2
Цитата Сообщение от h0las_qq Посмотреть сообщение
Не понимаю, почему передаем в функцию именно двойной указатель на структуру?
У Вас надо спросить наверное Такими же успехами можете и тройной указатель передавать и пятерной. И обращаться как (*(*(*(*Head))))->Data.
0
h0las_qq
0 / 0 / 0
Регистрация: 26.12.2015
Сообщений: 15
22.03.2016, 12:44  [ТС] 3
Более-менее разобрался, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2016, 12:44

Указатель на метод
struct abc{ int a; int b; int c; abc(int na = 0, int nb = 0, int nc...

Указатель на пользовательский тип
Чёто туплю, почему когда передаёшь переменную (например int) параметром через...

Указатель на метод класса.
Программа отказывается присваивать метод класса указателю. Как исправить? ...


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

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

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