- •Основные математические библиотечные функции.
- •Библиотечные функции генерации случайных чисел.
- •Объявление функций (прототипы функций). Описание функций. Вызов функций. Понятие формальных и фактических параметров функции.
- •Способы передачи параметров в функцию. Возвращение результатов.
- •Передача в функцию одномерных массивов.
- •Передача в функцию двумерных массивов.
- •Понятие рекурсивной функции. Пример рекурсивной функции.
- •Перегрузка функций.
- •Шаблоны функций.
- •Понятие структуры. Объявление и инициализация структур.
- •Файлы и их назначение. Логическое и физическое имя файла.
- •Открытие файлов.
- •Способы доступа к файлам.
- •Спецификаторы класса памяти.
- •Операция :: .
- •Функции препроцессора. Основные директивы препроцессора
- •Директива include. Ее назначение. Правила использования.
- •Директива #define. Ее назначение. Символьные константы и макросы. Правила использования директивы.
- •Директива #undef.
- •Условная компиляция файлов.
- •Управление выполнением директив.
- •Понятие динамической структуры. Виды динамических структур. Их отличие друг от друга.
- •Организация списка на основе массива.
- •Возможная структура элемента связного списка.
- •Однонаправленные и двунаправленные связные списки.
- •Добавление узлов в разные части связного списка.
- •Удаление узлов из разных частей связного списка.
- •Поиск элемента связного списка, содержащего указанную пользователем информацию.
-
Директива #define. Ее назначение. Символьные константы и макросы. Правила использования директивы.
Создает символьные константы, обозначаемые идентификаторами и макросами, операции, обозначаемые символьными строками. Формат директивы препроцессора define следующий: #define идентификатор замещающий текст. После появления этой строки все встретившиеся имена, которые совпадают с идентификатором, будут заменены до компиляции заменяющим текстом автоматически.
Пример.
#define PI 3.14159
Присвоить константе имя и использовать далее в программе
#define NUM 20
#define TXT (NUM+5)
#define A
K=TXT*2
A замещается на пустоту директивы препроцессора define с макросами. Макрос, определяемый директивой препроцессора define, - это символьное имя некоторых операций. Формат такой же. Также символьное значение может замещаться на замещаемый текст до компиляции. Макросы могут определяться с параметрами и без них. Макросы без параметров обрабатываются подобно символьным константам. Если же макрос имеет, параметр, то сначала в замещенный текст подставляется значение параметра, а затем уже этот расширенный макрос подставляется в текст вместо идентификатора.
Пример. Макрос с одним параметром
#define PI 3.14159
#define CIRCLE AREA(x) (PI*(x)*(x))
(PI*(4)*(4))
area=CIRCLE_AREA(4);
area=(3.14159*(4)*(4));
Вычисления, выполняемые макросом, можно выполнить при помощи функции
Double circle area(double x)
{ return 3.14159*x*x;}
-
Директива #undef.
Отменяет определение символьных констант и макросов.
Структура директивы: #undef идентификатор. Область действия символьных констант или макросов начинается с места их определения и заканчивается явным их аннулированием директивой #undef или концом файла. После аннулирования соответственный идентификатор может быть использован в директиве define.
#define A 15
#define F(x, y) (x)-(y)
#define A
#undef A
#undef F(x, y)
-
Условная компиляция файлов.
Дает возможность программисту управлять выполнением директив препроцессора и компиляции программного кода. Каждая условная директива препроцессора вычисляет значение целочисленного постоянного выражения. Операции преобразования типов size of и постоянные перечисляемого типа (enum) не могут участвовать в выражениях, вычисляемых директивой препроцессора. С помощью # можно исключить повторение const.
#ifdef e
#define e 2.7
#endif
Механизм действия заключается в том, что define возвращает 1, если определено и 0, если неопределенно. Если идентификатор не определен, то первая строка возвращает 1 и директива define производит нужный расчет, в противном случае директива опускается. Для переопределения константы можно использовать следующий набор директив.
#ifdef e
#undef e
#define e 2.7
#endif
Каждому If соответствует свое endif.
Набор директив может исключить фрагмент программы из процесса компиляции. Если if определена, то повторно она не определяется, а в последующем можно переопределить ее значение.
Набор директив может исключать
# if 0
// исключаемый фрагмент
#endif
для того, чтобы включить, достаточно 0 заменить на 1.
#ifdef Dibi текст
Если определена константа Dibi, то текст включается в процесс компиляции. Если неопределенна, то исключается.