Зачем нужны прототипы в C++?
1)Заголовочные файлы: в них собраны прототипы функций библиотек?(и все?)
Содержимое заголовочного файла просто подставляется в то место где написано #include. Поэтому туда можно поместить всё что угодно. Традиционно библиотеки помещают туда объявления классов, функций и глобальных переменных и определения макросов.2)Как компилятор находит нужные встроенные функции по прототипам если мы не включаем в cpp файл библиотеки а лишь подключаем заголовочный файл с помощью #include?
Компилятор их не находит. Не его это работа. Он просто помещает в объектный код вызовы ссылающиеся на внешние символы. Во время линковки объектных файлов в исполняемый файл линковщик находит все вызванные функции в библиотеках которые ему передали для линковки.3)Я так понимаю прототипы в C++ нужны для того чтобы компилилось быстрее?
Прототипы нужны чтобы компилировалось вообще. Нельзя вызвать функцию о которой неизвестно вообще ничего.4)Заголовочные файлы представляют из себя уже откомпиленый код?(объектный)
Нет, это обыкновенные текстовые файлы с исходным кодом. Содержимое заголовочного файла просто подставляется в то место где написано #include. Открой один для интереса и почитай.5)Тот же вопрос что и в 4 только уже про библиотеки
Да. Статическая библиотека -- это архив объектных файлов. Динамическая библиотека -- это собранные линковщиком вместе объектные файлы.
1) В заголовочном файле могут быть объявлены типы данных, прототипы функций, само тело функции, шаблоны. Всё это может быть объявлено и в cpp.
2) Этим занимается линкер.
3) Это одна из причин. Вторая - разрешение проблем видимости.
Например попробуйте написать без прототипов взаимно рекурсивные функции.
4) Нет
5) Нет