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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2009, 22:54   #1
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию Прототип функции

Подскажите, зачем нужно прописывать прототип в функции, я так и не понял. Что это даёт?
Syltan вне форума Ответить с цитированием
Старый 27.08.2009, 23:00   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Любая функция должна быть объявлена перед тем, как будет использована. Если описание функции находится до ее первого вызова, то прототип не нужен.
Пример:
Код:
int max(int a, int b)
{
 return (a>b) ? a : b;   
}

int main()
{
 int a=3,b=2,c;
 c = max(a,b);
 return 0;
}
Но если описание находится где-то дальше, то нужно все-таки дать программе понять, что такая функция существует. Для этого и нужен прототип.
Код:
int main()
{
 int a=3,b=2,c;
 c = max(a,b);   // ошибка! Неизвестная функция.
 return 0;
}

int max(int a, int b)
{
 return (a>b) ? a : b;   
}
А вот так нормально:
Код:
int max(int,int);  // прототип
int main()
{
 int a=3,b=2,c;
 c = max(a,b);
 return 0;
}

int max(int a, int b)
{
 return (a>b) ? a : b;   
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.08.2009, 23:14   #3
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Тоесть прототип функции, описуется после
Код:
 using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
Syltan вне форума Ответить с цитированием
Старый 27.08.2009, 23:16   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Syltan
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
Да. Вроде того.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.08.2009, 23:34   #5
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Я про этот код:

Код:
#include <iostream>
#include <string>
using namespace std;

int max(int,int);  // прототип
int main()
{
 int a=3,b=2,c;
 c = max(a,b);
 return 0;
}

int max(int a, int b)
{
 return (a>b) ? a : b;   
}
А в параметрах прототипа нужно указывать типы, а не переменные что ли,полностью все какие там стот, у вас вижу 2 инта стоит, в этой строке:

Код:
int max(int,int);  // прототип
Syltan вне форума Ответить с цитированием
Старый 27.08.2009, 23:43   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А в параметрах прототипа нужно указывать типы, а не переменные что ли,полностью все какие там стот
В прототипе нужно обязательно указать типы параметров. Имена не обязательно. Можно задать такой прототип:
Код:
int max(int a, int b);
или такой
Код:
int max(int Name1, int Name2);
не важно.

Еще раз: всякая функция должна быть объявлена раньше, чем будет использована. Это как с переменными. Они тоже должны быть объявлены перед использованием.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
функции helavisa Общие вопросы C/C++ 2 31.05.2009 22:23
функции surovii Помощь студентам 10 28.03.2009 13:12
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Прототип Принц Общие вопросы C/C++ 2 06.06.2008 18:36