Каково хорошее определение «указателя пользовательских данных»?
-
03-07-2019 - |
Вопрос
Я искал хорошее объяснение, но не нашел его.
Я мог бы попытаться написать его сам, но я бы предпочел, чтобы кто-то с лучшими способностями английский мог бы помочь мне объяснить это Зану Линксу в комментарии здесь.
...и кажется, где-то должно быть хорошее объяснение, почему не здесь?
Решение
Когда библиотека управляет некоторыми структурами данных от имени программы (например.окна в приложении с графическим интерфейсом управляются ОС), содержимое этих структур обычно остается конфиденциальным.Однако обычно программе полезно сохранять некоторые дополнительные данные, специфичные для использования программой этих структур.Поэтому библиотека часто предоставляет доступ к полю (часто называемому данные пользователя), который он хранит в каждой структуре.
Обычное использование поля пользовательских данных программой заключается в выделении некоторой памяти каждый раз, когда программа запрашивает библиотеку для создания структуры, и сохранении указателя на эту память в поле пользовательских данных, предоставленном библиотекой, отсюда и термин указатель пользовательских данных.
Другие советы
Посмотри на sqlite3_exec() – он вызывает обратный вызов (третий параметр) для каждой полученной строки и передает предоставленный вами указатель (четвертый параметр) в этот обратный вызов.Это может быть указатель на любой объект, который вы пожелаете — вам необходимо правильно его привести, прежде чем вы сможете получить доступ к указанному объекту.Этот объект называется объектом пользовательских данных, а указатель на него называется указателем пользовательских данных.
В случае sqlite3_exec() вы можете передать указатель на контейнер, который должен хранить все полученные строки таблицы после завершения запроса.