![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 0 Всего: 1 |
Всем привет. Читаю книгу и не могу розобратся с прототипами функции...
И если можно то примерчик какой-нибудь Спасибо. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Sergio, Прототип функции это ее опережающее описание. Он служит знаком компилятору, что где-то в проекте есть процедура с таким имененм и параметрами. Тогда компилятор встречая ее вызов знает, что как передается ей и кроме того он знает, что ее нужно включить в код или подключить из библиотеки. Если реализация функции выше места ее использования, то прототип не нужет, так как вся нужная информация у компилятора уже есть. Если же ее реализация ниже по тексту или вообще в другом моделе или библиотеке, то прототип должен быть обязательно описан перед первым вызовом этой функции.
Прототип представляет собой заголовок функции и параметрами, после которых идет ";" вместо фигурных скобок. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
1.хороший стиль описывать ф-ии в отдельных заголовках, их обьявления находятся в .h, который в свою очередь подключается к нужному файлу проекта.. 2.при описании класса не будешь же ты определять ф-ии внутри класса.. 3. если ф-ия 1 используется в ф-ии 2, тогда придется заботится про определение ф-ии 1 до ф-ии 2, что может запутать при большом кол-ве ф-ий.. обьявления решают все эти проблемы |
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: 1 Всего: 11 |
что-то вроде этого alexeis1 тупанул Это сообщение отредактировал(а) EvgenZ - 20.10.2006, 15:36 -------------------- <удалено администрацией форума> |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
EvgenZ, А конопочка "КОД" для чего дана?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| WERITAS |
|
|||
|
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Коротко и ясно: прототип ф-ции нужен, чтобы компилятор видел какие у нее параметры
-------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: 1 Всего: 11 |
Коротко, но не ясно По функциям не помню, а вот с классами бывает так, что в одном классе используется ссылка на другой класс, а первый класс содержит ссылку на первый, т.е. без первого не создашь второй и наоборот. Для того чтобы скомпилировалось надо сделать объявление одного класса и после описывать второй и потом уже описывать первый. В функциях вроде такая же тема. -------------------- <удалено администрацией форума> |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Если функция вызывает себя (в т.ч. и через другую функцию), то она рекурсивная. Рекурсия используется не очень часто. Но не смотря на это в Си подавляющее большинство функций объявлено прототипами (в .h файлах). WERITAS был прав. |
|||
|
||||
| vinter |
|
||||||||||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
че то я не понял ты хочешь сказать, что при конструкции
func2() является рекурсивной?? Добавлено @ 18:16 правильно
неправильно
=> EvgenZ прав
никто обратного не утверждал просто
|
||||||||||||
|
|||||||||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Нет, он хотел сказать что func2 будет рекурсивной при:
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
понятно.. замкнутый круг какой-то
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ну, вообще-то в этом случае, как и в обычной рекурсии, хотя бы в 1-ой из функций присутствуют условия окончания рекурсии.
В выложенном варианте - да, stack overflow обеспечен... |
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 0 Всего: 1 |
Народ, то я так понял что прототип функция - это обявление функции (перед функцией main) и всё???
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Чтобы компилятор знал эту функцию
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |