|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
Для чего нужны callback-функции10.04.2009, 17:55. Показов 85789. Ответов 103
Метки нет (Все метки)
0
|
|
| 10.04.2009, 17:55 | |
|
Ответы с готовыми решениями:
103
|
|
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
|
||
| 10.04.2009, 18:09 | ||
|
Это тот код, который реагирует внешние и внутрение воздействия, наример, выбор пункта меню или щелчок по кнопке.
1
|
||
|
Maniac
|
||||||
| 10.04.2009, 18:10 | ||||||
Сообщение было отмечено как решение
Решение
Ну вот пример
9
|
||||||
|
Деструктор ума
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
|
||||||
| 10.04.2009, 20:03 | ||||||
|
Callback эт передача исполняемогго кода в качестве одного из параметров другого колда.
Эта функция позволяет отсортировать массив блоков байт одинаковой длины. В качестве аргументов она получает адрес первого элемента массива, количество блоков в массиве, размер блока байт, и указатель на функцию сравнения двух блоков байт. - вики и прим ее
1
|
||||||
|
Maniac
|
|||
| 11.04.2009, 01:19 | |||
|
log, Вы только запутаете ТС таким примером(хотя может и мой не лучше).
В вики написано(сами предложили):
1
|
|||
|
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
|
||
| 11.04.2009, 13:40 | ||
|
1
|
||
|
Деструктор ума
22 / 22 / 0
Регистрация: 07.03.2009
Сообщений: 326
|
|
| 11.04.2009, 14:56 | |
|
ISergey, может и прав,я просто особо дело не имел с такой функцией, а привиденные примеры, могут qwert куда нибудь подтолкнут
0
|
|
|
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
|
|
| 12.04.2009, 01:44 [ТС] | |
|
Спасибо! Ну, принцип и для чего нужны я понял, не так всё и сложно.
0
|
|
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 7
|
|
| 16.09.2014, 14:56 | |
|
а по человечески никто объяснять не умеет??
примеры полные хотяб привел кто, а то хрень поймешь как работать на вызывающей стороне.
0
|
|
|
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
|
||
| 16.09.2014, 15:04 | ||
|
Mit, вот адекватный пример.
0
|
||
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 7
|
||||||
| 16.09.2014, 15:27 | ||||||
|
вот небольшой кусок кода, где у меня ошибка?
0
|
||||||
|
20 / 20 / 2
Регистрация: 27.01.2014
Сообщений: 232
|
|
| 16.09.2014, 15:37 | |
|
Можно передать функцию в функцию, которая считает например приближенное значение определенного интеграла. Таким образом у тебя будет одна функция для вычисления интеграла, в которую ты сможешь передавать разные функции. ..... PROFIT!
0
|
|
|
Неэпический
|
|
| 16.09.2014, 15:58 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 7
|
|
| 16.09.2014, 20:08 | |
|
да, верно, а ошибка была в другом месте
0
|
|
|
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
|
|
| 03.06.2020, 00:22 | |
|
Всё же остался открытым вопрос какое преимущество дает возможность отправлять для одной функции аргумент являющийся другой функцией?
Может мы делаем проще код? А может наша программа работает эффективнее и мы экономим какие-то ресурсы? Или может есть такие случаи когда выполнить алгоритм по-другому, НЕ используя ЭТОТ самый метод , вообще невозможно или очень затруднительно получить результат? В приведённых примерах я вижу что вместо двух функций перебора и сравнения мы написали ТРИ функции- две функции сравнения и одну "общую" для переборки элементов массива. Что это дало? Ну разве что эти функции немного проще чем если бы мы в каждой из них перебирали массив. не очень уверен что оно того стоит.
0
|
|
|
Вездепух
12933 / 6801 / 1820
Регистрация: 18.10.2014
Сообщений: 17,214
|
||||
| 03.06.2020, 00:55 | ||||
qsort стандартной библиотеки в качестве одного из своих параметров принимает указатель на callback функцию - предикат сравнения.Добавлено через 3 минуты qsort. Благодаря тому, что это функция реализует полиморфизм времени выполнения через callback, она может использоваться для сортировки массивов любых пользовательских данных. То есть функция qsort реализована всего один раз, но является универсальной: при правильной параметризации она применима к любым массивам данных. Во в этом и заключается преимущество реализации через callback. Фактически то же самое вам уже проиллюстрировал ISergey в ответе #3.
0
|
||||
|
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
|
|
| 03.06.2020, 13:13 | |
|
Очень интересный ответ. Вы обьясняете непонятное через непонятное. Видимо дя выражения "полиморфизм по времени" очень трудно найти простые слова. Полиморфизм означает множество форм, у времени нет форм. Может это укладывается в историю терминов программирования но чистая содержательная корректность названия вызывает сомнения.
По сути дела в приведённом коде одна нить выполнения кода, какие там можно штуки со временем выполнять если нет никаких дополнительных потоков? Как только функция получила аргументы так она и выполняет код и все остальные части программы не работают. Где же тут магия перемещения во времени?
0
|
|
|
Неэпический
|
||
| 03.06.2020, 13:23 | ||
|
Я вижу лишь "полиморфизм времени выполнения". Полиморфизм может быть статическим - полиморфизм времени компиляции, либо динамическим - полиморфизм времени выполнения. Как сказано выше, с помощь callback'ов можно реализовать динамический полиморфизм. Также это можно сделать, например, с помощью виртуальных функций (если не вдаваться в реализацию механизма вызова этих самых функций). К статическому полиморфизму можно отнести шаблоны, перегрузку функций.
1
|
||
|
"C with Classes"
|
|
| 03.06.2020, 13:27 | |
|
Святогор, один и тот же код получая разные адреса может делать разные вещи, это на самом деле очень выгодая гибкость, когда что то одинаковое делает разное.
0
|
|
|
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
|
|
| 03.06.2020, 13:31 | |
|
Святогор, знаете, иногда можно наблюдать в кино, или может кто-то в жизни так делает, когда мама, или папа оставляют записки для детей на холодильнике.
Например "обед на плите, купи хлеб". Вот эта записка - это callback. Если еще чуть-чуть формализовать это, то мама - это вызывающая функция, ребенок - вызываемая. а "купи хлеб" - это callback, который вызываемая функция, то есть ребенок, должна исполнить на свой стороне. В программировании все несколько более абстрактно, поэтому вызываемая функция может вообще не знать (в отличии от ребенка из аналогии) что именно надо сделать. Главное, чтобы входные данные и выходные данные этого действия удовлетворяли некоему соглашению.
0
|
|
| 03.06.2020, 13:31 | |
|
Помогаю со студенческими работами здесь
20
приведите пожалуйста реальный прмиер: для чего нужны дружественные функции?
callback функции не для кнопок на экране, а для клавиш на клав. и мышке. Как? Для чего нужны интерфейсы? Для чего нужны указатели? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|