![]() |
|
Модераторы: bsa |
![]()
|
|
| Merlin_ua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Чем является void** ?
Например, есть функция принимающая в качестве аргумента void** int F(void** x); Что это: указатель на указатель? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Ну представь что тебе нужно инициализировать указатель в некоторой функции (выделить память). Тут несколько вариантов, либо передать указатель по ссылке в функцию, либо адрес указателя (т.е. указатель на указатель), либо вернуть как значение. Еще это может понадобиться если создаешь массив указателей (или массив массивов). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Merlin_ua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
А почему просто не использовать ссылку на указатель?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Merlin_ua, может потому что язык Си, а не С++?
На твой вопрос ответить очень сложно. Так как ситуации бывают разные. Кстати, а такой код тебя смущать не будет?
|
|||
|
||||
| Merlin_ua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Смущает
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
да, это указатель на указатель. все просто и ясно))) Добавлено через 1 минуту и 9 секунд вспомнив, что указатель хранит адрес, получится что это переменная, которая хранит адрес указателя |
|||
|
||||
| Merlin_ua |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
Вот собственно код:
baldina, просто и понятно. Спасибо. baldina,
А может ли эта переменная иметь тип, отличный от void ? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
можно привести к нужному типу.. В приведенном вами коде используется отражение типов на цифровые константы.. контроль соответсвия типов компилятором быть выполнен не может, поэтому дляупрощения своей жизни, программист должен синхронизировать отдачу и получения такогоуказателя.. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
есть указатель на неизвестный (или произвольный) тип, void*
есть указатели на конкретные типы int*, char* и т.д. конечно, может быть указатель на указатель какого-либо конкретного типа, например int** только это не переменная типа void (такого не бывает), а специальный указатель |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Потенциально опасный код.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
это не всегда возможно, в частности когда реальные типы еще не известны.. Добавлено через 1 минуту и 43 секунды пример действительно опасен, ноп я так понимаю это упрощенный для наглядности пример.. |
|||
|
||||
| Merlin_ua |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 22.11.2006 Репутация: нет Всего: нет |
baldina,
я не верно выразился. mes,
Да, это упрощенный пример для наглядности. Всем спасибо! Вопрос закрыт. |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |