avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
||||||||||||||||
1 | ||||||||||||||||
Передача функции в качестве параметра функции14.10.2015, 14:45. Просмотров 2698. Ответов 10
Метки нет Все метки)
(
Дорогие форумчане! Повторяю пример из книжки. До конца не понял его! Помогите разобраться!
Тема: односвязный линейный список. Плюс, использование рекурсий. Дано: 1) Объявление структуры:
Вопрос - зачем ее передавать в качестве параметра??? Пробовал передать и так и эдак - компилятор ругается. Этот нюанс не понял, функцию-обработчик f в качестве параметра не использовал и всё работает:
0
|
|
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
14.10.2015, 14:45 |
Ответы с готовыми решениями:
10
Передача функции в качестве параметра Передача функции в качестве параметра Передача CString в качестве параметра функции
Передача временного массива в качестве параметра функции |
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
|
|
14.10.2015, 15:04 | 2 |
Что за книжка, какого года? Не времён Borland С++?
У тебя просто область видимости позволяет вызывать функцию напрямую, но вот 2 разные функции уже не вызовешь. А в примере подразумевается, что через visitor можно вызывать разные функции по содержанию, но с одинаковым прототипом.
0
|
avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
|
14.10.2015, 15:15 [ТС] | 3 |
nmcf
Лаптев " C++ (Экспресс курс)". Пишу в Borland'е, всё верно. Но он писал примеры для Borland'е 3.1. У меня в Borland'е Builder 6.0 примеры работают. Честно говоря пытаюсь вникну в Ваше объяснение, но пока никак... Сейчас двоичное дерево пойдет и там опять такое определение...
0
|
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
|
|||||||||||
14.10.2015, 15:30 | 4 | ||||||||||
![]() Решение
Вот так должно быть по-современному.
1
|
14.10.2015, 15:30 | |
avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
|||||||||||
14.10.2015, 15:42 [ТС] | 5 | ||||||||||
nmcf
Спасибо! Понял, что можно выбирать функции. Понял суть. Эта запись так и нее заработала (добавил #include <functional> вначале):
До этого я при вызове по-разному пробовал - и функцию по адресу передать и параметр, всё вместе... Но написать просто "f" даже в голову не пришло!)
0
|
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
|
|
14.10.2015, 15:43 | 6 |
2004 год? Возьми современную и выбрось древний Borland.
Точно заработало? Сделай ещё функцию с другим именем и попробуй её также использовать.
0
|
avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
|
14.10.2015, 15:47 [ТС] | 7 |
Здесь же, если можно, вопрос про стек при использование рекурсии.
Я, как понимаю, объекты структур не в стеке создал. И этот перебор - просто прыжки с адреса нынешнего объекта на другой. Где тут использование стека? Добавлено через 29 секунд nmcf, сейчас Qt начал изучать
0
|
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
|
|
14.10.2015, 15:48 | 8 |
Ты просто передаёшь указатель на следующий объект списка и так до конца.
Ну сама рекурсия уже стек. Что тебя смущает?
0
|
avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
|
14.10.2015, 15:52 [ТС] | 9 |
Что я создал объект. Для него при компиляции выделилась память. Под каждое поле, по-моему, в т.ч. под указатель.
Я благодаря рекурсии просто прыгаю с объекта в объект, т.е. перебираю адреса в памяти, которые уже выделились. А стек же что-то динамическое
0
|
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
|
|
14.10.2015, 15:58 | 10 |
У тебя всё в стеке, если внутри main() объявлено. А рекурсия просто просматривает объекты.
0
|
avovana
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 88
|
|
14.10.2015, 16:02 [ТС] | 11 |
0
|
14.10.2015, 16:02 | |
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
14.10.2015, 16:02 |
Передача функции в качестве параметра в другую функцию
Передача двумерного массива указателей на char в качестве параметра функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |