Главная > Уроки > Стандартная библиотека языка Си

Записывайся на этот курс на Stepike!

Стандартная библиотека языка Си

В прошлых уроках мы изучили много различных стандартных функций. Большинство из них становились доступны, когда мы подключали в программу определенный заголовочные файлы, наприимер stdio.h, math.h или string.h. Они входят в состав стандартной библиотеки языка Си. Кроме них есть другие заголовочные файлы, которые включены в стандартную библиотеку языка Си, например, из используемых нами ранее stdlib.h и time.h.

Стандартная библиотека языка Си – это набор отдельных файлов, которые расширяют возможности языка Си. Например, как мы уже отмечали ранее, добавление к нашей программе файла math.h позволяет использовать различные математические функции. Добавление stdio.h позволяет взаимодействовать программе с внешним миром (читать/выводить данные).

Схематично можно представить себе язык программирования Си как набор отдельных законченных модулей. Условно эта структура изображена на следующем рисунке.

Архитектура языка Си.

Рис.1 Архитектура языка Си.

По факту язык Си самостоятельно, без функций стандартной библиотеки, почти ничего не может. Даже вывести значение переменной на экран. Но благодаря дополнительным модулям (стандартным заголовочным файлам) возможности языка могут быть существенно расширены. А если какие-то возможности не нужны, то они не будут включены в итоговую версию программы.

Модульный подход получил широкое распространение в программировании. Основные плюсы:

  • модули между собой независимы и каждый из них может разрабатываться/меняться отдельно от других модулей и всей программы в целом;
  • возможность самостоятельно подключать необходимые модули;
  • возможность расширения функционала за счёт добавления/написания нового модуля.

Модули могут быть реализованы, например, в виде отдельных заголовочных файлов или отдельных файлов с кодом. Каждый модуль должен решать какие-то свои задачи. Модуль можно представить себе как «чёрный ящик». У него есть две основных части: интерфейс взаимодействия с модулем (сколько и каких данных поступает в чёрный ящик и какие данные им возвращаются) и внутренняя реализация модуля (содержимое чёрного ящика).

Если рассматривать отедельную функцию языка Си как модуль, то интерфейсом является заголовок или прототип функции. Он полностью описывает, что необходимо функции для работы: какого типа данные нужны, в каком порядке их надо передавать, в каком количестве и т.д., а также какие данные функция возвращает. Тело функции при этом является реализацией модуля.

Кстати, что касается стандартной библиотеки языка Си. Если вы ещё не пробовали искать у себя на компьютере заголовочные файлы, то попробуйте. Внутри них только прототипы функций, а самой реализации нет. Т.е. по факту в заголовочных файлах содержится только интерфейс модуля или по-другому API(Application Programming Interface, чит. эй-пи-ай, иногда по-русски произносят апи), а сами реализации от программиста скрыты и находятся уже в отдельных, скомпилированных библиотечных файлах.

Использование API – тоже широко распространённая практика. Многие сервисы предоставляют свой открытый API. Например, платформа Stepic, которую я использую для автоматической проверки задач, или сайт Вконтакте. Т.е. по сути данные сайты выкладывают в открытый доступ (vk, Stepic) описание различных функций, которые я могу использовать в своих программах. Именно на использовании API строится разработка различных сервисов и приложений для работы с различными платформами.

Сохрани в закладки или поддержи проект.

Практика

  1. заданий нет

Дополнительные материалы

  1. пока нет

Оставить комментарий

Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]

Комментарии

Данил
[/Хорошие уроки.]
KaDeaT
Спасибо! Приходите ещё)
Dundukov
"в каком количестве и т.д., а также какие данные функция возвращает. "

В каком смысле "какие данные функции возвращает" ? Это же в теле функции, перед return , а не в заголовке и не в прототипе. Или я не понял?
KaDeaT
Тип возвращаемого значения указывается в заголовке. А уже сами данные, конечно, в return.)
kaxabertsitaishvili
очень хороший курс,всё передаётся и обьясняется простим и понятным языком .спасибо вам огромное
KaDeaT
И вам спасибо!
Oxigen Coder
небольшая опечатка, у вас "Stepic", вместо "Stepik".
KaDeaT
Это не совсем опечатка! Раньше они назывались Stepic, а потом сменили название. Оставляю это, как дань истории!
Dmitrii
лучший вводный курс по C, низкий поклон авторам <3