§ 13. Препроцессор

§ 13.1 Вставка содержимого

Мы уже пользовались разными директивами препроцессора. Даже в самом первом примере была одна. Рассмотрим самое главное (не будем рассматривать диграфы и триграфы).

Директива #include <...> включает содержимое заголовочного файла в ваш файл. Угловые скобки нужны для включения стандартных заголовочных файлов, кавычки — ваших собственных и библиотечных.

#include <stdio.h>  // Стандартные заголовочные файлы.
#include "my_lib.h" // Заголовочные файлы библиотек и проекта.

Читать далее →
§ 12. Побитовые операторы

Побитовые операторы используются для манипуляции отдельными битами числа или всеми сразу. Битовые маски применяются для кодирования параметров устройств и функций, для работы с IP-адресами и так далее.

Побитовый сдвиг влево: все биты сдвигаются влево, самый левый бит теряется, справа приписывается 0. Эквивалентно умножению на 2.

unsigned short a = 1093;        // 00000100 01000101 (1093)
unsigned short result = a << 1; // 00001000 10001010 (2186)

Побитовый сдвиг вправо: все биты сдвигаются вправо, самый правый бит теряется, слева приписывается 0. Эквивалентно делению на 2.

Читать далее →
§ 11. Классы памяти

Этот параграф не столько раскрывает новую тему, сколько консолидирует знания и опыт, почерпнутые вами ранее.

1. Все переменные, которые вы просто объявляете и используете внутри функций, являются автоматическими (стековыми). Можно (но не нужно, потому что оно подразумевается) писать слово auto (в языке C++ с некоторых пор это ключевое слово стали использовать по-новому).

auto int foo = 0;

Примечание. В последних стандартах языка C++ слово auto утратило прежний смысл и теперь означает совсем другое.

Такие переменные хранятся на стеке (его размер небольшой), время жизни ограничено текущим блоком (говоря по-простому, фигурными скобками).

Фигурные скобки можно расставлять не только в конструкциях типа if или for, а в любых местах функции. Тогда переменная, объявленная в таком блоке, также будет ограничена его рамками.

Читать далее →
§ 10. Работа с файлами

§ 10.1 Режимы работы и основы

Чтобы работать с файлами, нужно создать файловый дескриптор (указатель на FILE). С помощью функции fopen() откроем файл, указав путь к нему и режим (не забудем проверить результат на равенство NULL), поработаем с ним и закроем с помощью fclose().

FILE *file = fopen("myfile.txt""w+"); // Открываем файл.
if (file == NULL)
{
    // Ошибка. Принимаем меры.
}
// Работаем с файлом.
fclose(file); // Закрываем файл.

Читать далее →
2
1