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

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

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

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

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

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

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

Зачем нужно прописывать прототипы отдельно от самой функции?? - C++
Зачем нужно прописывать прототипы отдельно от самой функции?? Мне ответят: что бы компилятор знал что "отдать", и что "получить". Но ведь я...

<iostream> зачем тогда объявлять <string>? - C++
вот такой пример, в котором локальная переменная скрывает глобальную, но вопрос то не в этом, почему автор подключил &lt;string&gt;? У меня все...

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

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

БД "Аэрофлот", прототипы функций - C++
компилирую в dev c++ а получаю undefined reference to `Start(bd**, bd**)' похожие проблемы видела на форуме, но там не совсем то ...

Что такое прототип функции? - C++
Зачем нужен прототип функции ведь она и без него прекрасно работает? Если можете объясните как чайнику в подробностях) заранее спасибо...

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

5) Куча - Вся остальная память, чтоб программа могла дополнительно размешать данные, генерируемые в ходе ее работы. Динамическая память. new, delete, malloc и free как раз запрашивают (создают) именно в куче переменные. Среди переменных как правило есть и объекты (экземпляры классов). Они тоже в большинстве своем (частично правда) хранятся именно в куче - свободной памяти, выделенной для программы, которой можно распоряжаться как хочется.
1
Croessmah
Ушел
13770 / 8020 / 924
Регистрация: 27.09.2012
Сообщений: 19,747
Записей в блоге: 3
Завершенные тесты: 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);
}
0
_Ivana
3227 / 1855 / 156
Регистрация: 01.03.2013
Сообщений: 5,082
Записей в блоге: 5
16.07.2016, 20:49 #5
Croessmah, если в одном файле - то это имхо действительно костыли - на порядок костыльнее претензий к тайпдефу структур в Си.
0
Croessmah
Ушел
13770 / 8020 / 924
Регистрация: 27.09.2012
Сообщений: 19,747
Записей в блоге: 3
Завершенные тесты: 1
16.07.2016, 20:55 #6
Цитата Сообщение от _Ivana Посмотреть сообщение
на порядок костыльнее претензий к тайпдефу структур в Си.
Меня эти тайпдефы никак не беспокоят.
Это не я Вам эти претензии предъявлял
Цитата Сообщение от _Ivana Посмотреть сообщение
если в одном файле - то это имхо действительно костыли
Возможно, но мы сейчас не об этом.
Костыль это или нет сейчас не важно.
0
shilko2013
248 / 225 / 119
Регистрация: 02.04.2016
Сообщений: 880
Завершенные тесты: 1
17.07.2016, 14:54 #7
Михаилыч, Попробуй написать класс из 50 длинных функций без прототипов и разобраться потом в нем.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2016, 14:54
Привет! Вот еще темы с ответами:

сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять? - C++
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь...

Явная специализация, зачем она нужна?(Шаблоны функций) - C++
Какой смысл в явной специализации, когда есть перегрузка? если можно, и примерчик) я себе уже в голову вбил, и тут надо чем-то тяжелым...

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы - C++
Заранее спасибо.

Зачем в целом числе писать вещественную часть при расчете триганометрических функций в библиотеке math.h - C++
Доброго времени суток. В чем собственно петрушка. При расчете функции наткнулся на ошибку вычислений. В результате было обнаружено...


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

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

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