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

Зачем объявлять прототипы функций? Что даёт прототип? - C++

Восстановить пароль Регистрация
 
Михаилыч
13 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 9
16.07.2016, 20:02     Зачем объявлять прототипы функций? Что даёт прототип? #1
Зачем объявлять прототипы функций? Можно же описать функцию в начале программы и вызвать в самой проге. Что даёт прототип?

Зачем нужна куча? Можно с примером.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
skaaarj
0 / 0 / 0
Регистрация: 13.07.2016
Сообщений: 5
16.07.2016, 20:16     Зачем объявлять прототипы функций? Что даёт прототип? #2
Цитата Сообщение от Михаилыч Посмотреть сообщение
Что даёт прототип?
отсутствие необходимости "описать функцию в начале программы и вызвать в самой проге", например, что решительно повышает читабельность кода. а ещё разделять объявление и определение, что позволяет писать заголовочные файлы и создавать унифицированные интерфейсы к библиотекам.
Цитата Сообщение от Михаилыч Посмотреть сообщение
Зачем нужна куча?
для того, чтобы операционная система могла управлять динамической памятью, выделяемой твоей программе.
Цитата Сообщение от Михаилыч Посмотреть сообщение
Можно с примером.
C
1
2
3
4
int *ptr = (int *) malloc(sizeof(int) * 5); // выделить место в куче под 5 int
ptr[0] = 123;                               // поделать что-нибудь с местом
ptr[1] = 100500;
free((void *)ptr);                          // освободить занятое место
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,601
16.07.2016, 20:35     Зачем объявлять прототипы функций? Что даёт прототип? #3
Цитата Сообщение от Михаилыч Посмотреть сообщение
Зачем нужна куча?
Операционная система при запуске исполнимого файла выделяет ему блоки памяти группируя их примерно так:
1) Сегмент данных - глобальные переменные, константы, перечисления и прочее, что непосредственно хранится в исполнимом файле
2) Стек - для локальных переменных, параметров функций (не всегда) и указателей, помогающих выйти из функции
3) Ресурсы - Картинки, тест, шрифты... Все что можно запихнуть в ресурсы EXE. Такой себе склад разнообразного хлама
4) Сегмент кода - код программы.

5) Куча - Вся остальная память, чтоб программа могла дополнительно размешать данные, генерируемые в ходе ее работы. Динамическая память. new, delete, malloc и free как раз запрашивают (создают) именно в куче переменные. Среди переменных как правило есть и объекты (экземпляры классов). Они тоже в большинстве своем (частично правда) хранятся именно в куче - свободной памяти, выделенной для программы, которой можно распоряжаться как хочется.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,875
Записей в блоге: 2
Завершенные тесты: 1
16.07.2016, 20:42     Зачем объявлять прототипы функций? Что даёт прототип? #4
Цитата Сообщение от Михаилыч Посмотреть сообщение
Что даёт прототип?
Сделайте без "прототипов":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void bar(int);
 
void foo(int x){
   bar(x);
}
 
 
void bar(int x){
   if(x==0)
      foo(x+1);
}
 
 
int main(){
   foo(0);
}
_Ivana
2180 / 1385 / 124
Регистрация: 01.03.2013
Сообщений: 4,129
Записей в блоге: 2
16.07.2016, 20:49     Зачем объявлять прототипы функций? Что даёт прототип? #5
Croessmah, если в одном файле - то это имхо действительно костыли - на порядок костыльнее претензий к тайпдефу структур в Си.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,875
Записей в блоге: 2
Завершенные тесты: 1
16.07.2016, 20:55     Зачем объявлять прототипы функций? Что даёт прототип? #6
Цитата Сообщение от _Ivana Посмотреть сообщение
на порядок костыльнее претензий к тайпдефу структур в Си.
Меня эти тайпдефы никак не беспокоят.
Это не я Вам эти претензии предъявлял
Цитата Сообщение от _Ivana Посмотреть сообщение
если в одном файле - то это имхо действительно костыли
Возможно, но мы сейчас не об этом.
Костыль это или нет сейчас не важно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2016, 14:54     Зачем объявлять прототипы функций? Что даёт прототип?
Еще ссылки по теме:

C++ БД "Аэрофлот", прототипы функций
Почему у меня для использования функций cstring не нужно включать прототип библиотеки C++
Что такое прототип функции? C++

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

Или воспользуйтесь поиском по форуму:
shilko2013
 Аватар для shilko2013
238 / 215 / 116
Регистрация: 02.04.2016
Сообщений: 812
Завершенные тесты: 1
17.07.2016, 14:54     Зачем объявлять прототипы функций? Что даёт прототип? #7
Михаилыч, Попробуй написать класс из 50 длинных функций без прототипов и разобраться потом в нем.
Yandex
Объявления
17.07.2016, 14:54     Зачем объявлять прототипы функций? Что даёт прототип?
Ответ Создать тему
Опции темы

Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru