Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

21
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
27.08.2009, 22:52 #2
А если у тебя функция используется в мэйн до ее определения? Его наверх переносить? Два раза прогонять?
А если писать по правилам, то ты все определения функций в одном месте с кодом держишь? Хорошо бы в отдельный заголовочный файл с прототипами и отдельный спп-файл с реализациями.
0
Syltan
182 / 8 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 22:56  [ТС] #3
Дайте пример пожалуйста,если не сложно,чтоб увидеть и понять, зачем нужен прототип функции.
0
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
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 минуту
До более нормальных примеров современем дойдешь сам.
0
AnonymC
1176 / 459 / 30
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
27.08.2009, 22:58 #5
Syltan, что за прототип?...напиши код ниче не понял...
для таких вопросох книжки существуют
0
Evg
Эксперт CАвтор FAQ
18909 / 6868 / 503
Регистрация: 30.03.2009
Сообщений: 19,336
Записей в блоге: 30
27.08.2009, 23:01 #6
@lex, в примере из поста 4 "void show();" называется словом "прототип". Т.е. описание типов параметров и типа результата функции без определения тела самой функции
0
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
27.08.2009, 23:04 #7
Evg, думаю, автор ставил вопрос так "а нафига мне описывать типы, параметры и тип результата функции без определения тела самой функции" ))
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 23:08 #8
Цитата Сообщение от Syltan Посмотреть сообщение
Скажите,какой смысл описывать протип функции, тоесть первую строчку функции, прописывать ещё раз вверху, перед функцией main(). Что это даёт,я так и не понял?
в принципе в с++ вы можете функцию не декларировать, а сразу определять. но условие: компилятор должен прочесть ее до первого обращения к ней.
иногда вы обязаны декларировать "раньше". например, если вы пишете библиотеку, которую будете поставлять вместе с заголовочным файлом.
0
Evg
Эксперт CАвтор FAQ
18909 / 6868 / 503
Регистрация: 30.03.2009
Сообщений: 19,336
Записей в блоге: 30
27.08.2009, 23:10 #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, думаю, автор ставил вопрос так "а нафига мне описывать типы, параметры и тип результата функции без определения тела самой функции" ))
Дык я не автору отвечал, а товарищу, который вопрос автора не осилил
0
Syltan
182 / 8 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 23:13  [ТС] #10
Тоесть прототип функции, описуется после
C++
1
using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
0
HIMen
4163 / 1412 / 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
0
Evg
Эксперт CАвтор FAQ
18909 / 6868 / 503
Регистрация: 30.03.2009
Сообщений: 19,336
Записей в блоге: 30
27.08.2009, 23:17 #12
Цитата Сообщение от Syltan Посмотреть сообщение
Тоесть прототип функции, описуется после
C++
1
using namespace std;
для того,чтоб можно было вызвать функцию раньше,чем она описана. Тоесть вначале вызвать, а потом описать её.
Правильно. только фразу "описуется после using namespace std;" надо вычеркнуть. Когда компилятор видит вызов "func (10, 20);" то к этому моменту он должен знать, какие типы параметров и сколько их вообще. Если функция описана "ниже", то без прототипа будет ошибка
1
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;
это вообще никак не связано
0
Syltan
182 / 8 / 0
Регистрация: 27.08.2009
Сообщений: 868
27.08.2009, 23:30  [ТС] #14
О компиляции,что программа не скомпилится, если не поставить после этой строки, но оказывается наверное это ошибочно считать, тоесть по словам Эвга.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 23:36 #15
Цитата Сообщение от Syltan Посмотреть сообщение
О компиляции,что программа не скомпилится, если не поставить после этой строки, но оказывается наверное это ошибочно считать, тоесть по словам Эвга.
короче: компилятор не скомпилирует обращение к фии, если не будет каким-то образом знать формат фии. он просто не сумеет это правильно сделать.
0
27.08.2009, 23:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2009, 23:36
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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