Введение в язык Си++


Срочный ремонт холодильников. Неправильно думать, что vip шлюхи медленны в трахе. Все парни их услуг на веб портале http://prostitutkiomska24.top/myprice/5000-50000/ согласны, что интим с ними имеет свои достижения. | Вам необычайно приглядывается такая услуга, как эротический массаж? На веб-сайте для взрослых http://prostitutkiomskalist.com/services-for-sex/eroticheskij-massazh/ вы можете найти огромное количество шикарных проституток, способных порадовать вас данной услугой.

Введение в язык Си++

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

Размышления о программировании на C++
C++ проектировался для использования в довольно традиционной среде компиляции и выполнения, среде программирования на C в системе UNIX. Средства обработки особых ситуаций и параллельного программирования, требующие нетривиальной загрузки и поддержки в процессе выполнения, не были включены в C++. Вследствие этого реализация C++ очень легко переносима. Однако есть полные основания использовать C++ в среде, где имеется гораздо более существенная поддержка.

Турне по C++
Введение
Вывод
Компиляция
Ввод
Комментарии
Типы и Описания
Основные Tипы
Производные Типы
Выражения и Операторы

Вложенные Классы
Если только вложенный класс не является очень простым, в таком описании трудно разобраться. Кроме того, вложение классов - это не более чем соглашение о записи, поскольку вложенный класс не является скрытым в области видимости лексически охватывающего класса: class set { struct setmem { int mem; setmem* next; setmem(int m, setmem* n) }; // ... }; setmem::setmem(int m, setmem* n) { mem=m, next=n} setmem m1(1,0);

Статические Члены
Указатели на Члены
Структуры и Объединения
Структуры и Объединения - 2
Конструкторы и Деструкторы
Предостережение
Статическая Память
Свободная Память
Объекты Класса и Члены
Вектора Объектов Класса

Видимость имен членов
Если перед именем базового класса в описании производного класса стоит ключевое слово public, то общие члены базового класса являются общими для производного класса; если нет, то они являются закрытыми. Общий член mem закрытого базового класса base может быть описан как общий для производного класса с помощью описания вида typedef-имя . идентификатор;

Друзья (friends)
Функция операция
Структуры
Объединения
Поля бит
Вложенные классы
Инициализация
Список инициализаторов
Классовые объекты
Ссылки

История и назначение языка Си++
Язык Си++ является универсальным языком программирования, в дополнение к которому разработан набор разнообразных библиотек. Поэтому, строго говоря, он позволяет решить практически любую задачу программирования. Тем не менее, в силу разных причин (не всегда технических) для каких-то типов задач он употребляется чаще, а для каких-то – реже.

Простейшая программа на языке Си++
Простейшая программа на языке Си++ - 2
Компиляция и выполнение программы
Компилирование программ в среде Windows
Компилирование программ в среде Unix
История и назначение языка Си++
Простейшая программа на языке Си++
Компиляция и выполнение программы
Выполнение программ в среде Windows
Выполнение программ в среде Unix

Имена
Идентификаторы в языке Си++ – это последовательность знаков, начинающаяся с буквы или знака подчеркивания. В идентификаторах можно использовать заглавные и строчные латинские буквы, цифры и знак подчеркивания. Длина идентификаторов произвольная.

Переменные
Константы

Выражения
Выражения – это переменные, функции и константы, называемые операндами, объединенные знаками операций. Операции могут быть унарными – с одним операндом, например, минус; могут быть бинарные – с двумя операндами, например сложение или деление. В Си++ есть даже одна операция с тремя операндами – условное выражение. Чуть позже мы приведем список всех операций языка Си++ для встроенных типов данных.

Операция присваивания
Операция присваивания - 2
Все операции языка Си++
Арифметические операции
Операции сравнения
Логические операции
Битовые операции
Условная операция
Последовательность
Операции присваивания

Что такое оператор
Запись действий, которые должен выполнить компьютер, состоит из операторов. При выполнении программы операторы выполняются один за другим, если только оператор не является оператором управления, который может изменить последовательное выполнение программы.

Что такое оператор
Операторы-выражения
Объявления имен
Операторы управления
Условные операторы
Условные операторы - 2
Операторы цикла
Операторы цикла - 2
Оператор возврата
Оператор перехода

Вызов функций
Программа на языке Си++ состоит, по крайней мере, из одной функции – функции main. С нее всегда начинается выполнение программы. Встретив имя функции в выражении, программа вызовет эту функцию, т.е. передаст управление на ее начало и начнет выполнять операторы. Достигнув конца функции или оператора return – выхода из функции, управление вернется в ту точку, откуда функция была вызвана, подставив вместо нее вычисленный результат.

Вызов функций
Вызов функций - 2
Имена функций
Необязательные аргументы функций
Рекурсия
Рекурсия - 2

Целые числа
Для представления целых чисел в языке Си++ существует несколько типов – char, short, int и long (полное название типов: short int, long int, unsigned long int и т.д.. Поскольку описатель int можно опустить, мы используем сокращенные названия). Они отличаются друг от друга диапазоном возможных значений. Каждый из этих типов может быть знаковым или беззнаковым. По умолчанию, тип целых величин – знаковый.

Целые числа
Целые числа - 2
Целые числа - 3
Вещественные числа
Логические величины
Символы и байты
Символы и байты - 2
Кодировка, многобайтовые символы
Наборы перечисляемых значений
Наборы перечисляемых значений - 2

Понятие класса
До сих пор мы говорили о встроенных типах, т.е. типах, определенных в самом языке. Классы - это типы, определенные в конкретной программе. Определение класса включает в себя описание, из каких составных частей или атрибутов он состоит и какие операции определены для класса.

Понятие класса
Определение методов класса
Переопределение операций
Подписи методов и необязательные аргументы

Массивы
Следует отметить, что при выполнении программы границы массива не контролируются. Если мы ошиблись и вместо 12 в приведенном выше цикле написали 13, то компилятор не выдаст ошибку. При выполнении программа попытается напечатать 13-е число. Что при этом случится, вообще говоря, не определено. Быть может, произойдет сбой программы. Более вероятно, что будет напечатано какое-то случайное 13-е число.

Массивы
Массивы - 2
Структуры
Битовые поля
Объединения
Объединения - 2
Указатели
Указатели - 2
Адресная арифметика
Связь между массивами и указателями

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

Автоматические переменные
Статические переменные
Динамическое выделение памяти
Выделение памяти под строки
Рекомендации по использованию указателей
Ссылки
Ссылки - 2
Распределение памяти при передаче
Распределение памяти при передаче - 2
Распределение памяти при передаче - 3

Виртуальные методы
В обоих классах, выведенных из класса Item, имеется метод Title, выдающий в качестве результата заглавие книги или название журнала. Кроме этого метода, полезно было бы иметь метод, выдающий полное название любой единицы хранения. Реализация этого метода различна, поскольку название книги и журнала состоит из разных частей. Однако вид метода – возвращаемое значение и аргументы – и его общий смысл один и тот же.

Виртуальные методы
Виртуальные методы - 2
Виртуальные методы и переопределение методов
Преобразование базового и производного классов
Внутреннее и защищенное наследование
Абстрактные классы
Множественное наследование
Множественное наследование - 2

Интерфейс и состояние объекта
Основной характеристикой класса с точки зрения его использования является интерфейс, т.е. перечень методов, с помощью которых можно обратиться к объекту данного класса. Кроме интерфейса, объект обладает текущим значением или состоянием, которое он хранит в атрибутах класса. В Си++ имеются богатые возможности, позволяющие следить за тем, к каким частям класса можно обращаться извне, т.е. при использовании объектов, и какие части являются "внутренними", необходимыми лишь для реализации интерфейса.

Интерфейс и состояние объекта
Интерфейс и состояние объекта - 2
Объявление friend
Использование описателя const
Доступ к объекту по чтению и записи
Доступ к объекту по чтению и записи - 2

Копирующий конструктор
Остановимся чуть подробнее на одном из видов конструктора с аргументом, в котором в качестве аргумента выступает объект того же самого класса. Такой конструктор часто называют копирующим, поскольку предполагается, что при его выполнении создается объект-копия другого объекта.

Копирующий конструктор
Копирующий конструктор - 2
Копирующий конструктор - 3
Деструкторы
Инициализация объектов
Инициализация объектов - 2
Инициализация объектов - 3
Инициализация объектов - 4
Операции new и delete
Операции new и delete - 2

Переопределение операций
Язык Си++ позволяет определять в классах особого вида методы – операции. Они называются операциями потому, что их запись имеет тот же вид, что и запись операции сложения, умножения и т.п. со встроенными типами языка Си++.

Переопределение операций
Как определять операции
Как определять операции - 2
Преобразования типов
Явные преобразования типов
Стандартные преобразования типов
Преобразования указателей и ссылок
Преобразования типов в программе
Переопределение операций
Как определять операции

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

Компоновка нескольких файлов в одну программу
Проблема использования общих функций
Проблема использования общих функций - 2
Использование включаемых файлов
Использование включаемых файлов - 2
Использование включаемых файлов - 3
Препроцессор
Определение макросов
Условная компиляция
Дополнительные директивы препроцессора

Файлы и переменные
Автоматические переменные определены внутри какой-либо функции или метода класса. Назначение автоматических переменных – хранение каких-либо данных во время выполнения функции или метода. По завершении выполнения этой функции автоматические переменные уничтожаются и данные теряются. С этой точки зрения автоматические переменные представляют собой временные переменные.

Файлы и переменные
Общие данные
Глобальные переменные
Повышение надежности обращения к данным
Повышение надежности обращения к данным - 2
Повышение надежности обращения к данным - 3
Область видимости имен
Оператор определения контекста namespace

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

Виды ошибок
Возвращаемое значение как признак ошибки
Возвращаемое значение как признак ошибки - 2
Исключительные ситуации
Обработка исключительных ситуаций
Обработка исключительных ситуаций - 2
Примеры обработки исключительных ситуаций
Примеры обработки исключительных ситуаций - 2

Потоки
Класс istream реализует поток ввода, класс ostream – поток вывода. Эти классы определены в файле заголовков iostream.h. Библиотека потоков ввода-вывода определяет три глобальных объекта: cout,cin и cerr. cout называется стандартным выводом, cin – стандартным вводом, cerr – стандартным потоком сообщений об ошибках. cout и cerr выводят на терминал и принадлежат к классу ostream, cin имеет тип istream и вводит с терминала.

Потоки
Операции и для потоков
Операции и для потоков - 2
Манипуляторы и форматирование ввода-вывода
Строковые потоки
Строковые потоки - 2
Ввод-вывод файлов
Ввод-вывод файлов - 2

Назначение шаблонов
Независимо от того, к какому именно типу принадлежат переменные a, b и x, если это один и тот же тип, для которого определена операция "меньше", запись будет одна и та же. Было бы естественно определить функцию min, возвращающую минимум из двух своих аргументов. Возникает вопрос, как описать аргументы этой функции?

Назначение шаблонов
Функции-шаблоны
Шаблоны классов
Шаблоны классов - 2
"Интеллигентный указатель"
"Интеллигентный указатель" - 2
Задание свойств класса
Задание свойств класса - 2

Создание вашей первой программы
Все вы использовали компьютерные программы, такие как текстовый процессор, электронные таблицы и даже Microsoft Windows 95. Компьютерные программы, или программное обеспечение, представляют собой файлы, содержащие инструкции, которые указывают компьютеру, что следует делать. Если вы работаете в среде MS-DOS или Windows, то, например, файлы с расширениями ЕХЕ и СОМ содержат команды, которые компьютер может выполнять. Другими словами, файлы содержат специальные инструкции, выполняемые компьютером, обычно одну за другой, для решения определенной задачи.

Создание простой программы
Создание простой программы - 2
Компиляция вашей программы
Компиляция вашей программы - 2
Создание второй программы
Изучение синтаксических ошибок
Работа в среде типа Windows
Что вам необходимо знать
Более внимательный взгляд на C++
Взгляд на операторы программы

Уменьшение количества операторов
Оператор cout *string++, заставляет C++ вывести символ, указываемый указателем string, а затем увеличить текущее значение string, чтобы он указывал на следующий символ. С помощью этих методов следующая программа SMARTPTR.CPP иллюстрирует новую реализацию функций show_string и string_length

О математике указателя
Что вам необходимо знать
Знакомство с классами C++
Представление об объектах и ООП
Представление об объектах и ООП - 2
Определение методов класса вне класса
Определение методов класса вне класса - 2
Второй пример
Что вам необходимо знать
Частные и общие данные

Программирование на C++ глазами хакера
В этой книге мы будем рассматривать программирование для хакера. Что подразумевается под словом "хакер"? Лично я вкладываю в это понятие несколько иной смысл, чем обычно. Я считаю, что хакер - это профессионал в компьютерной сфере, а не взломщик или разрушитель информации. Хакер - это компьютерный специалист, необязательно доставляющий много неприятностей другим людям своими знаниями.

C++ глазами хакера
C++ глазами хакера - 2
Введение
О книге
О книге - 2
Кто такой хакер? Как им стать?
Кто такой хакер? Как им стать? - 2
Кто такой хакер? Как им стать? - 3
Кто такой хакер? Как им стать? - 4
Кто такой хакер? Как им стать? - 5

Минимизация и невидимость
Что самое главное при написании программ-приколов? Ну, конечно же, невидимость. Программы, созданные в этой и следующих главах, будут незаметно сидеть в системе и выполнять нужные действия при наступлении определенного события. Это значит, что программа не должна отображаться на Панели задач или в списке запущенных программ, в окне, появляющемся при нажатии Ctrl+Alt+Del.

Сжатие запускаемых файлов
Сжатие запускаемых файлов - 2
Сжатие запускаемых файлов - 3
Без окон, без дверей...
Без окон, без дверей... - 2
Без окон, без дверей... - 3
Без окон, без дверей... - 4
Без окон, без дверей... - 5
Без окон, без дверей... - 6
Простейшая программа

Простые шутки
Теперь можно приступать к написанию простых программ-приколов в Windows. Так как эта ОС самая распространенная, то и шутки в ней самые интересные. Думаю, что любой компьютерщик с удовольствием подкинет своему другу какую-нибудь веселую программку, которая введет жертву в легкий шок. В каждом из нас заложено еще при рождении стремление к превосходству. Все мы хотим быть лучшими, и программисты часто доказывают свое первенство с помощью написания чего-то уникального, интересного и вызывающего.

Летающий Пуск
Летающий Пуск - 2
Летающий Пуск - 3
Летающий Пуск - 4
Летающий Пуск - 5
Летающий Пуск - 6
Летающий Пуск - 7
Летающий Пуск - 8
Начните работу с кнопки Пуск
Начните работу с кнопки Пуск - 2

Система
В этой главе будут рассматриваться разные системные утилиты. Сюда войдут примеры программ, способных следить за происходящим в системе. Это уже не просто программы-приколы, а работа с системой, хотя шуток в рассматриваемых задачах будет достаточно. Как я уже говорил, любой хакер — это профессионал, а значит, должен знать и уметь работать с внутренностями той ОС, в которой он находится.

Работа с чужыми окнами
Работа с чужыми окнами - 2
Работа с чужыми окнами - 3
Работа с чужыми окнами - 4
Дрожь в ногах
Дрожь в ногах - 2
Переключение экранов
Переключение экранов - 2
Переключение экранов - 3
Переключение экранов - 4

Работа с сетью
Я напомню, что первоначальный смысл слова "хакер" был больше связан с человеком, который хорошо знает программирование, внутренности ОС и сеть. Вопросам программирования посвящена вся книга. В предыдущих главах мы учились понимать внутренности ОС на интересных, шуточных примерах. Теперь перейдем к рассмотрению сети.

Теория сетей и сетевых протоколов
Теория сетей и сетевых протоколов - 2
Сетевые протоколы
Протокол IP
Сопоставление адреса ARP и RARP
Транспортные протоколы
Быстрый UDP
Медленный , но надежный TCP
Медленный , но надежный TCP - 2
Прикладные протоколы — загадочный NetBIOS

Работа с железом
Так как в данной книге упор сделан на работу с сетью, то и здесь я коснусь этой темы. При написании сетевых программ очень часто надо знать параметры локального компьютера, а иногда даже уметь изменять их. Я покажу, как определить параметры сетевой карты и сетевые настройки. Прочитав эту главу, вы найдете ответ на очень часто возникающий у начинающих программистов вопрос: "Как узнать IP-адрес локального компьютера?"

Параметры сети
Параметры сети - 2
Параметры сети - 3
Параметры сети - 4
Изменение IP-адреса
Изменение IP-адреса - 2
Изменение IP-адреса - 3
Работа с СОМ-портом
Работа с СОМ-портом - 2
Работа с СОМ-портом - 3

Полезные алгоритмы
При разборе сетевых функций в главах 4 и 5 были рассмотрены интересные примеры, но в них было несколько недостатков. Например, сканер портов был медленным, и на проверку 1000 портов уходило слишком много времени. Я уже упоминал о том, что необходимо для ускорения этого процесса. В этой главе я покажу самый быстрый сканер, который можно сделать очень гибким и универсальным.

Алгоритм приема/передачи данных
Алгоритм приема/передачи данных - 2
Алгоритм приема/передачи данных - 3
Самый быстрый сканер портов
Самый быстрый сканер портов - 2
Самый быстрый сканер портов - 3
Самый быстрый сканер портов - 4
Самый быстрый сканер портов - 5
Состояние локального компьютера
Состояние локального компьютера - 2

Список литературы и ресурсы Интернета
Меня часто спрашивают, что можно еще почитать, чтобы стать настоящим хакером или повысить уровень знаний? На этот вопрос я отвечаю: "Абсолютно все!!!" Я читаю любые документы, файлы помощи, статьи, которые попадаются мне на глаза. Специализированной литературы практически нет, но заранее никогда неизвестно, в какой книге встретишь что-то новое и интересное, что позволит сделать нечто совершенное и непохожее на другие проекты.

Заключение
Список литературы и ресурсы Интернета

Правила программирования на Си и Си++

Делается попытка дать средство для преодоления этой трудности в виде собрания практических правил программирования на Си++ и Си - правил, которые, надеюсь, уберегут вас от неприятностей, если вы будете их использовать с самого начала. Хотя большинство из приводимых здесь правил применимы равно при программировании как на Си, так и на Си++, я включил много материала, относящегося лишь к миру Си++ и сконцентрированного по мере возможности в заключительном разделе. Если вы программируете лишь на Си, то просто игнорируйте материал по Си++, встречающийся вам в более ранних разделах.

Правила программирования на Си и Си++
Минимизация обычно выполняется в Си посредством модулей, а в Си++ посредством классов. Функции в модуле (функции-члены в классе) сцеплены друг с другом, но за исключением нескольких интерфейсных функций (или объектов) они вовсе не сообщаются с внешним миром. В Си вы должны использовать статический класс памяти, чтобы ограничить использование функции одним модулем. В Си++ вы используете закрытые функции-члены.

Заказчик всегда прав
Малое — это прекрасно (большое == медленное)
Общие проблемы разработки программ
Прежде всего, не навреди
Нельзя измерять производительность числом строк
Вы не можете программировать в изоляции
Пустые потери времени
Пишите программу с учетом сопровождения
Эффективность — часто просто пугало
Форматирование и документация

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

Проектируйте с учетом наследования
Функция использовать закрытые поля данных класса
Используйте константы
Используйте структуры
Тела функций в определениях классов
Тела функций в определениях классов - 2
Избегайте перегрузки функций и аргументов
Избегайте перегрузки функций и аргументов - 2
Избегайте дружественных классов
Наследование — это форма сцепления

C++.Бархатный путь
Как правило, в книгах, посвящённых описанию языков программирования, в качестве иллюстраций приводятся примеры не сложнее, чем реализация алгоритма пузырьковой сортировки. Более сложные примеры отвлекают от основного предмета изучения. К тому же, даже самые простые содержательные примеры в книге о языке программирования неизбежно ограничивают "поле зрения" читателей, оставляя за пределами их внимания множество безупречных, с точки зрения синтаксиса языка программирования, предложений.

C++. Бархатный путь
C++. Бархатный путь - 2

Язык и грамматика
Формальный язык является объединением нескольких множеств: множества исходных символов, называемых литерами (алфавит), множества правил, которые позволяют строить из букв алфавита новые слова (правила порождения слов или идентификаторов), множества предопределённых идентификаторов или словаря ключевых слов (прочие идентификаторы называются именами), множества правил, которые позволяют собирать из имён и ключевых слов выражения, на основе которых строятся простые и сложные предложения (правила порождения операторов или предложений).

Эволюция языков программирования
Транслятор и компоновщик
Библиотеки
Алфавит C++
Правила образования идентификаторов
Ключевые слова и имена
Символы операций и разделителей
Литералы
Литералы - 2
Структура предложения C++

Обзор принципов объектно-ориентированного программирования
Основные типы с их свойствами и перечнем операций, леводопустимые выражения, операторы управления, массивы и указатели, указатели на функции и функции, использующие указатели на функции как параметры и возвращаемые значения, совместно используемые (перегруженные) функции и алгоритм сопоставления… При объявлении классов мы знаем, в чём состоят различия между статическими и нестатическими членами, нам известно назначение деструкторов и особенности различных вариантов конструкторов.

Операторные функции
Операторные функции - 2
Операторные функции - 3
Операторные функции - 4
Операторные функции - 5
Операторные функции - 6
Операторные функции - 7
Вызов операторной функции operator ~()
Функции operator new() и operator delete()
Функции operator new() и operator delete() - 2

Справочное руководство по C++
Язык программирования C++ - это C, расширенный введением классов, inline-функций, перегруженных операций, перегруженных имен функций, константных типов, ссылок, операций управления свободной памятью, проверки параметров функций. Коротко различия между С++ и "старым С" приведены

Договоренности о лексике
Комментарии
Идентификаторы (имена)
Ключевые слова
Константы
Целые константы
Явно заданные длинные константы
Символьные константы
Константы с плавающей точкой
Перечислимые константы