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

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

Войти
Регистрация
Восстановить пароль
 
Михаилыч
13 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 15
#1

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

16.07.2016, 20:02. Просмотров 238. Ответов 6
Метки нет (Все метки)

Зачем объявлять прототипы функций? Можно же описать функцию в начале программы и вызвать в самой проге. Что даёт прототип?

Зачем нужна куча? Можно с примером.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Хитрая блондиночка $)
1446 / 953 / 285
Регистрация: 21.12.2015
Сообщений: 3,798
16.07.2016, 20:35     Зачем объявлять прототипы функций? Что даёт прототип? #3
Цитата Сообщение от Михаилыч Посмотреть сообщение
Зачем нужна куча?
Операционная система при запуске исполнимого файла выделяет ему блоки памяти группируя их примерно так:
1) Сегмент данных - глобальные переменные, константы, перечисления и прочее, что непосредственно хранится в исполнимом файле
2) Стек - для локальных переменных, параметров функций (не всегда) и указателей, помогающих выйти из функции
3) Ресурсы - Картинки, тест, шрифты... Все что можно запихнуть в ресурсы EXE. Такой себе склад разнообразного хлама
4) Сегмент кода - код программы.

5) Куча - Вся остальная память, чтоб программа могла дополнительно размешать данные, генерируемые в ходе ее работы. Динамическая память. new, delete, malloc и free как раз запрашивают (создают) именно в куче переменные. Среди переменных как правило есть и объекты (экземпляры классов). Они тоже в большинстве своем (частично правда) хранятся именно в куче - свободной памяти, выделенной для программы, которой можно распоряжаться как хочется.
Croessmah
Модератор
Эксперт CЭксперт С++
12724 / 7184 / 801
Регистрация: 27.09.2012
Сообщений: 17,721
Записей в блоге: 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
2824 / 1649 / 142
Регистрация: 01.03.2013
Сообщений: 4,711
Записей в блоге: 2
16.07.2016, 20:49     Зачем объявлять прототипы функций? Что даёт прототип? #5
Croessmah, если в одном файле - то это имхо действительно костыли - на порядок костыльнее претензий к тайпдефу структур в Си.
Croessmah
Модератор
Эксперт CЭксперт С++
12724 / 7184 / 801
Регистрация: 27.09.2012
Сообщений: 17,721
Записей в блоге: 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++
C++ БД "Аэрофлот", прототипы функций
Почему у меня для использования функций cstring не нужно включать прототип библиотеки C++
Что такое прототип функции? C++
Зачем в целом числе писать вещественную часть при расчете триганометрических функций в библиотеке math.h C++

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

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

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