Язык программирования общего назначения С широко известен своей эффективностью, компактностью и мобильностью. Благодаря этим своим характеристикам он пригоден практически для любых областей программирования. С показал свою особенную эффективность в системном программировании, т.к. позволяет писать быстрые компактные программы, которые легко адаптируются в других системах. Хорошо написанные программы на С часто работают со скоростью программ на языке ассемблера, но для программиста их обычно легче читать и сопровождать.
С был разработан для сочетания эффективных и мощных средств в относительно небольшом языке. С не содержит встроенных функций для выполнения таких задач, как ввод и вывод, размещение в памяти, манипуляции с экраном и управление процессом. Для выполнения таких задач программисты на С используют "исполнительные библиотеки", наборы заранее определенных функций и макросов. Описания функций исполнительных библиотек включены в отдельную книгу.
Стиль программирования на С и гибкий и компактный. Этот язык достаточно свободный и он не предполагает и не навязывает конкретной модели программирования. Можно как использовать имеющиеся исполнительные программы, так и разрабатывать собственные вариации для конкретных целей. Разработка позволяет изолировать характеристики языка от особенностей процессора в конкретной реализации С, что позволяет писать мобильные коды. Точные определения языка делают его независимым от любой конкретной системы или машины, и в то же время позволяют использовать программы для конкретных систем для того, чтобы воспользоваться преимуществами самых эффективных характеристик конкретной машины.
Среди важных характеристик языка С можно отметить следующие:
Это руководство организовано следующим образом:
Глава 1, "Введение", знакомит с данным руководством и приводит соглашение о способах записи, принятых в этом издании.
Глава 2, "Элементы С", описывает буквы, числа и символы, которые можно использовать в программах на языке С, и комбинации символов, которые имеют специальные значения для компилятора С.
Глава 3, "Структура программы", рассматривает компоненты и структуру программ на С, и объясняет способ организации исходных файлов С.
Глава 4, "Объявления", объясняет, как задавать в С атрибуты переменных, функций и определяемых пользователем типов. В С имеется ряд заранее определенных типов данных и возможность объявления "агрегированных" типов и указателей. Прототипы функций, как относительно новый объект С, рассматриваются в данной Главе и в Главе 7, "Функции".
Глава 5, "Выражения и Присвоения", рассматривает операнды и операторы, которые формируют в С выражения и присвоения. Кроме того, в этой Главе также рассмотрено преобразование типов и побочные эффекты, которые могут проявиться при вычислении значений выражений.
Глава 6, "Операторы", описывает операторы С, которые управляют процессом выполнения программы.
Глава 7, "Функции", рассматривает функции С. А именно, в данной Главе объясняются прототипы функций, формальные параметры и возвращаемые значения. Показывается, как определять, объявлять и вызывать функции.
Глава 8, "Директивы процессора и Прагмы", рассматривает распознаваемые предпроцессором С инструкции. Это текстовый процессор, который автоматически вызывается перед компиляцией. Кроме того, в этой Главе рассмотрены так называемые "прагмы", специальные инструкции для компилятора, которые можно помещать в исходный файл.