Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2008, 20:20   #1
Rembo
Форумчанин
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
По умолчанию Помогите разобраться с функциями!

Здравствуйте, я вот тут начал проходить функции... Вообщем вначале мне говорили, что функцию можно писать только до строчки
Код:
int main(int nNumberofArgs, char* pszArgs[])
Но потом начали рассказывать про прототипы функции... Я так понял, что прототип функции что-то типо "тип_возвращаемого_значения название_функции (типы, переменный, которая функция должна принимать);
Подскажите, что дают эти прототипы? Можно ли с помощью них писать функции в других местах, а не только перед строчкой
Код:
int main(int nNumberofArgs, char* pszArgs[])
? Если кто-нибудь может пояснить, помогите пожалуйста....
Rembo вне форума Ответить с цитированием
Старый 08.02.2008, 20:46   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Функции можно определять где угодно и когда угодно, главное, чтобы на момент первого использования (т.е. первого вызова) они были бы уже определены. Ничего особенного с функцией main в этом смысле не связано, просто она вызывается первой, следовательно должна "знать" о всех использующихся внутри нее функциях. Кроме того, иногда бывает сложно поставить определение одной функции раньше другой, например, если они перекрестно вызывают друг друга. Поэтому и применяются прототипы - точные копии определений функции, включая параметры, и размещаются "в начале" - или в файлах заголовков, что упрощает их совместное использование разными "c" файлами, либо в начале "C" файла.
B_N вне форума Ответить с цитированием
Старый 08.02.2008, 20:46   #3
<vlad>
Пользователь
 
Аватар для <vlad>
 
Регистрация: 27.01.2008
Сообщений: 29
По умолчанию

Здраствуйте.
Прототип функции описывает ее асигнатуру(то есть тип возвращаемого значения и список формальных параметров). Нужны прототипы для того,чтоб можно было описывать тело функции после мейна. То есть сначала вы пишите прототип функии, а после мейна ее тело.
Примерно так:

Код:
void f(...);

int main()
{
...
}

void f(...)
{
...
}
<vlad> вне форума Ответить с цитированием
Старый 08.02.2008, 21:17   #4
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Сообщение

Всё выше сказанное про о прототипах верно. Можно лишь кое-что добавить:

ПРОТОТИПЫ СОДЕРЖАТ ТРИ ВИДА ИНФОРАЦИИ:
- тип возвращаемого значения функцией
- тип её формальных переменных(т.е параметров)
- а также их количество(параметров).

ПРОТОТИПЫ ПОЗВОЛЯЮТ КОМПИЛЯТОРУ ВЫПОЛНЯТЬ 3 ВАЖНЫЕ ОПЕРАЦИИ:
- сообщают тип генерируемого кода при её вызове
- позволяют обнаружить недопустимые преобр-я типов
- позволяют выявить различия между кол-вом аргументов используемых и объявленных.
Ну а на этом вроде как бы всё...
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 08.02.2008, 21:24   #5
Rembo
Форумчанин
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
По умолчанию

Большое Вам всем спасибо! Всё объяснили, и Я теперь знаю зачем нужны прототипы! Спасибо!
Rembo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобратся с функциями на С++ ANTI Общие вопросы C/C++ 1 04.03.2008 17:12
Помогите с интерполяционными функциями Лагранжа victor07 Помощь студентам 3 03.12.2007 15:47
Работа с функциями Worms Общие вопросы Delphi 1 02.12.2007 15:51