Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 90, средняя оценка - 4.96
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
#1

Прототип функции - C++

27.08.2009, 22:49. Просмотров 12130. Ответов 21
Метки нет (Все метки)

Скажите,какой смысл описывать протип функции, тоесть первую строчку функции, прописывать ещё раз вверху, перед функцией main(). Что это даёт,я так и не понял?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2009, 22:49     Прототип функции
Посмотрите здесь:

Прототип функции - C++
Здравствуйте я хотел спросить об прототипе функции ,а в общем для чего она нужна и как ее обозначать. Книга С.Прата Лекции и Упражнения.

Прототип функции - C++
Как правильно: void mul(int x, int y); int main() { } void mul(int x, int y) {

Прототип функции - C++
Записать прототип функции, которая осуществляет перевод десятичного числа в двоичную систему. #include <stdio.h> #include <conio.h> ...

прототип функции - C++
Использовать прототип функции То есть заголовок перед функцией main, а описание функции в теле функции main немогу с аргументами...

Прототип функции - C++
нужно написать прототип функции, которая имеет имя f1, возвращает вещественное значение и имеет два параметра, целые числа, которые...

Прототип функции - C++
Пожалуйста помогите!!! Написать программу для вычисления произведения ненулевых элементов, расположенные на четных строках массива...

Прототип функции - C++
Здравствуйте) Написать программу упорядочивания элементов массивов А(50), В(50), С(50) по возрастанию, используя прототип функции. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.08.2009, 22:52     Прототип функции #2
А если у тебя функция используется в мэйн до ее определения? Его наверх переносить? Два раза прогонять?
А если писать по правилам, то ты все определения функций в одном месте с кодом держишь? Хорошо бы в отдельный заголовочный файл с прототипами и отдельный спп-файл с реализациями.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 22:56  [ТС]     Прототип функции #3
Дайте пример пожалуйста,если не сложно,чтоб увидеть и понять, зачем нужен прототип функции.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.08.2009, 22:58     Прототип функции #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
void show();
 
int main()
{
    show();
    cin.get();
    return 0;
}
 
void show()
{
    cout<<"func "<<endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
    show();
    cin.get();
    return 0;
}
 
void show()
{
    cout<<"func "<<endl;
}
Добавлено через 1 минуту
До более нормальных примеров современем дойдешь сам.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.08.2009, 22:58     Прототип функции #5
Syltan, что за прототип?...напиши код ниче не понял...
для таких вопросох книжки существуют
Evg
Эксперт CАвтор FAQ
17540 / 5778 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
27.08.2009, 23:01     Прототип функции #6
@lex, в примере из поста 4 "void show();" называется словом "прототип". Т.е. описание типов параметров и типа результата функции без определения тела самой функции
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.08.2009, 23:04     Прототип функции #7
Evg, думаю, автор ставил вопрос так "а нафига мне описывать типы, параметры и тип результата функции без определения тела самой функции" ))
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 23:08     Прототип функции #8
Цитата Сообщение от Syltan Посмотреть сообщение
Скажите,какой смысл описывать протип функции, тоесть первую строчку функции, прописывать ещё раз вверху, перед функцией main(). Что это даёт,я так и не понял?
в принципе в с++ вы можете функцию не декларировать, а сразу определять. но условие: компилятор должен прочесть ее до первого обращения к ней.
иногда вы обязаны декларировать "раньше". например, если вы пишете библиотеку, которую будете поставлять вместе с заголовочным файлом.
Evg
Эксперт CАвтор FAQ
17540 / 5778 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
27.08.2009, 23:10     Прототип функции #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, думаю, автор ставил вопрос так "а нафига мне описывать типы, параметры и тип результата функции без определения тела самой функции" ))
Дык я не автору отвечал, а товарищу, который вопрос автора не осилил
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 23:13  [ТС]     Прототип функции #10
Тоесть прототип функции, описуется после
C++
1
using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
27.08.2009, 23:17     Прототип функции #11
Syltan, я тоже раньше не понимал, зачем это нужно, разобрался только когда в проектах появилось по несколько .h и .cpp.
Если у тебя один .h включен в несколько других .h то компилятор будет ругаться
one or more multiply defined symbols found
поэтому надо разделять заголовки в .h и сами функции в .cpp
Evg
Эксперт CАвтор FAQ
17540 / 5778 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
27.08.2009, 23:17     Прототип функции #12
Цитата Сообщение от Syltan Посмотреть сообщение
Тоесть прототип функции, описуется после
C++
1
using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
Правильно. только фразу "описуется после using namespace std;" надо вычеркнуть. Когда компилятор видит вызов "func (10, 20);" то к этому моменту он должен знать, какие типы параметров и сколько их вообще. Если функция описана "ниже", то без прототипа будет ошибка
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 23:29     Прототип функции #13
Цитата Сообщение от Syltan Посмотреть сообщение
Тоесть прототип функции, описуется после
C++
1
using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
странный подход. вы о компиляции говорите, или о выполнении?
а с
C++
1
using namespace std;
это вообще никак не связано
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 23:30  [ТС]     Прототип функции #14
О компиляции,что программа не скомпилится, если не поставить после этой строки, но оказывается наверное это ошибочно считать, тоесть по словам Эвга.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2009, 23:36     Прототип функции
Еще ссылки по теме:

прототип функции - C++
сделал стандуртную программу нахождения max в массиве с помощью фунцкции... а как переделать программу чтобы перед главной фунцией,...

Прототип функции - C++
Всем салют! Помогите пожалуйста с прототипом функции, очень прошу всех-сильно затрудняюсь в написании... Условие: Написать программу...

Прототип функции С++ - C++
Доброй ночи! помогите, пожалуйста, решить задачу с прототипом функции, вот условие: Написать функцию которая возводит указанное...

Прототип функции в struct - C++
Добрый день форумчане. Возможно ли в структуре объявить только прототип функции, а само тело написать вне структуры?

Прототип функции reload_buff() - C++
Приветствую Вас Господа ;) Посоветуйте, пожалуйста, как удобнее сделать заголовок функции, которая должна: из файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 23:36     Прототип функции #15
Цитата Сообщение от Syltan Посмотреть сообщение
О компиляции,что программа не скомпилится, если не поставить после этой строки, но оказывается наверное это ошибочно считать, тоесть по словам Эвга.
короче: компилятор не скомпилирует обращение к фии, если не будет каким-то образом знать формат фии. он просто не сумеет это правильно сделать.
Yandex
Объявления
27.08.2009, 23:36     Прототип функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru