Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
h0las_qq
0 / 0 / 0
Регистрация: 26.12.2015
Сообщений: 15
#1

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

19.03.2016, 16:24. Просмотров 340. Ответов 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 по ссылке. То есть, если мы хотим изменить нашу структуру, как в этом случае, добавив к ней еще элементы, мы должны передать ей эл-т по ссылке. Вот только как-то интересно получается... Ведь если мы передаем по указателю в функцию обычную переменную, она уже должна меняться, для того и передаем по указателю, собственно. Почему тогда структура таким образом не изменяется? Это конкретная особенность структур? Если так, то и на второй вопрос ответ ясен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2016, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зачем нужен указатель на указатель при работе с однонаправленным списком? (C++):

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

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

Указатель на функцию - C++
Доброго времени суток! Кто может посоветовать способ присвоить указателю на функцию значение, т.е. имя функции, если мы не будем...

Указатель на метод - C++
struct abc{ int a; int b; int c; abc(int na = 0, int nb = 0, int nc = 0):a(na),b(nb),c(nc){}; bool conf(int d){ ...

friend указатель - C++
Есть ли что-то типа этого в стандарте: class A { protected: double a; public: typedef double (*td) (double x); td a; ...

Указатель на метод класса. - C++
Программа отказывается присваивать метод класса указателю. Как исправить? test.cpp: In function ‘int main()’: test.cpp:66: error:...

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

Умный указатель ComPtr - C++
Равноценна ли запись с простым указателем #include &lt;d3d11_1.h&gt; ID3D11Device *device_11_0 = nullptr; ID3D11Device1 *device_11_1 =...

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

Указатель на абстрактный шаблонный класс - C++
Есть абстрактный шаблон класса и 3 производных от него шаблонов классов. Так же есть шаблонная функция, в которую нужно передать указатель...

Как предать указатель через LPARAM - C++
Хочу обойтись без глобальных объектов в приложении на Win32Api, в приложении из GUI только два диалога (за основное окно отдувается один из...


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

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

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