Справочник по C/C++
Введение

С и C++ - самые значительные языки программирования в мире. И в самом деле, быть сегодня профессиональным программистом означает знать эти два языка на высоком уровне, поскольку они представляют собой фундамент, на котором строится современное программирование.

Язык С изобрел Дэнис Ритчи (Dennis Ritchie) в начале 70-х годов. С относится к языкам среднего уровня, поскольку в нем управляющие структуры языков высокого уровня сочетаются со способностью манипулировать битами, байтами и указателями (адресами). Таким образом, С предоставляет программисту возможность практически полностью управлять компьютером. В 1989 году Американским национальным институтом стандартов (American National Standards Institute - ANSI) был принят стандарт для языка С. Эту версию языка С обычно называют С89. Кроме того, этот же стандарт был принят и Международной организацией стандартов (International Standards Organization - ISO). В 1995 году стандарт С89 был немного улучшен.

Язык C++ создан Бьярни Страуструпом (Bjarne Stroustrup), и годом создания считается 1979-й. Разработка и усовершенствование языка C++ потребовали от создателя больших усилий на протяжении 80-х и большей части 90-х годов. Наконец, в 1998 году был принят ANSI/ISO-стандарт для языка C++. Говоря в самых общих словах, язык C++ является объектно-ориентированной версией языка С. C++ построен на основе версии С89, включающей все усовершенствования 1995 года, и теперь эту версию С89 называют С-подмножеством языка C++. Несмотря на то что язык C++ был задуман как набор объектно-ориентированных расширений для языка С, вскоре он развился в самостоятельный язык программирования. В настоящее время его новые средства почти удвоили объем исходного языка. Вряд ли стоит доказывать, что C++ - один из самых мощных компьютерных языков, разработанных до сих пор.

В 1999 году был принят новый ANSI/ISO-стандарт для языка С. Эта версия называется С99. Она включает ряд усовершенствований и несколько новых средств. Одни из этих "новых" средств заимствованы из языка C++, а другие предоставляют совершенно новые возможности. Следовательно, отдельные элементы, добавленные в версии С99, несовместимы с языком C++. Это означает, что с появлением версии С99 стандарт языка С больше не является чистым подмножеством языка C++. К счастью, многие "несовместимости" связаны со средствами специального назначения, которые можно легко обойти. Таким образом, и новый вариант языка С позволяет создавать программы, совместимые с языком C++. На момент написания этой книги большинство компиляторов не принимали все новшества версии С99, но, безусловно, ситуация вскоре изменится.

В следующей таблице демонстрируются отношения между версиями С89, С99 и языком C++.

С89 Оригинальный стандарт ANSI/ISO языка С, который большинство программистов считают "настоящим" языком С
C++ Объектно-ориентированная версия языка С. Действующий в данный момент стандарт ANSI/ISO для языка C++ построен на основе версии С89. Следовательно, С89 является подмножеством языка C++
С99 Последний стандарт языка С. Включает в полном объеме вариант С89, но с несколькими новыми средствами. Причем некоторые из них не поддерживаются текущим стандартом языка C++

В этой книге описаны версии С89, С99 и действующий стандарт языка C++. Если какое нибудь средство является уникальным для одного из вариантов языков, этот факт обязательно отмечается в настоящем справочнике. При отсутствии специальной отметки можно предполагать, что описываемое средство работает во всех трех версиях.

Безусловно, в справочнике невозможно раскрыть все многогранные аспекты языков С и C++. Назначение справочника - дать краткое описание самых важных средств этих языков в удобной и понятной для использования форме.