
- •4.Элементы языка Си. Символы, лексемы, знаки операций.
- •1.Символы языка
- •2.Лексемы
- •5.Элементы языка Си. Константы, идентификаторы, ключевые слова, комментарии.
- •6.Типы данных.
- •7.1,Объявление переменных. Массивы.
- •7.2,Объявление переменных. Массивы.
- •9.1,Операции и выражения. Арифметические операции
- •11. Логические операции и операции отношения. Операции присваивания
- •12.Условное выражение. Операция Sizeof. Операции приведения типов type.
- •13.1,Преобразование типов в выражения. Правила приведения типов.
- •13.2,Преобразование типов в выражения. Правила приведения типов.
- •14.1, Управление вычислительными процессами. Конструкции if-else, else-if.
- •14.2, Управление вычислительными процессами. Конструкции if-else, else-if.
- •15.Переключатель
- •16. Операторы цикла.
- •17.1.Инструкции break, continue. Инструкция goto и метки. Пустой оператор
- •17.2.Инструкции break, continue. Инструкция goto и метки. Пустой оператор
- •Пустой оператор
- •18.1.Классы памяти.
- •18.2.Классы памяти.
- •19.1. Функции. Определение ф-ций.
- •Определение ф-ции
- •19.2. Функции. Определение ф-ций.
- •21. Структура программы на языке Си
- •22. Директивы #define и # undef.
- •24,Директивы препроцессора. Препроцессорные операции.
- •Препроцессорные операции
- •25.1, Указатели.Операции &,*.
- •25.2, Указатели.Операции &,*.
- •26. Указатель на неопределенный тип.
- •27.1,Выражения и операции с указателями. Присваивание указателей
- •Сравнение указателей
- •27.2,Выражения и операции с указателями. Применение арифметических операций к указателям
- •29. Массивы и указатели.
- •30.Операции с указателями на массив. Адресная арифметика.
- •32.Массивы указателей. Указатели на указатели.
- •33.Массивы указателей на строки.
- •34.1,Передача параметров из операционной среды.
- •34.2,Передача параметров из операционной среды.
- •36.1,Динамичное распределение памяти.
- •36.2,Динамичное распределение памяти.
- •37,1,Структуры. Операции над структурами
- •37,2,Структуры. Операции над структурами
- •38.Массив структур. Правило выравнивания структурных переменных в памяти
- •39.1,Переименование типов. Средство typedef.
- •39.2,Переименование типов. Средство typedef.
- •40.Поля битов.
- •41.1,Объединения
- •41.2,Объединения
- •42.Ввод, вывод потока.
- •43.Доступ к файлам через поток ввода/вывода.Открытие потока.Закрытие потока.
- •44.1,Доступ к файлам через поток ввода/вывода.Функция потокового ввода вывода.
- •44.2,Доступ к файлам через поток ввода/вывода.Функция потокового ввода вывода.
- •45,Последовательный и прямой доступ в поток.
21. Структура программы на языке Си
Реальный програмный продукт разрабативается как множество исходных файлов, к-рые крмпилируются отдельно. При такой структуре ф-ции разных файлов могут иметь глобальные переменные из общей памяти. Сами ф-ции по умолчанию всегда внешние и доступны из других файлов.
22. Директивы #define и # undef.
#define
Директива #define имеет два формата:
#define идентефикатор текст_подстановки
#define идентефикатор (список параметров) текст_подстановки
Формат 1 определяет простую подстановку и используется для того, чтобы связать идентефикатор с константой, ключевыми словами, операторами, выражениями. Идентефикатор для обозначения констант наз именованым (символическим) константами. Идентефикаторы для обозначения операторов и выражений наз макрокомандами. В тексте исходного файла все вхождения идентефикатора заменяются на текст подстановки
#define PI 3.1415
l=2*PI*r;
l=2*3.1415*r;
Идентефикатор заменяется если он образует лексему. Идентефикатор не заменяется если он является частью строки или другого идентефикатора.
Текст подстановки представляет собой последовательность лексем ,таких как ключевые слова, константы, операторы целые; если текст подстановки длинный, то используется оператор перенесения строки \ .
Формат2 : макроопределение с параметрами.
В исходном тексте, следующим за #define каждое вхождение идентефикатор (список параметров) заменяется на текст подстановки с заменой формальных параметров фактическими аргументами.
Каждое имя в списке формальных параметров должно быть уникальным. В определении макроподстановки может участвовать более ранние define определения.
Замечания:
1.пробелы в макроопределениях не допускаются, хотя они возможны в тексте подстановки.
2.отсутствует точка с запятой(;)
3.следует использовать круглые скобки
4.обычно для идентефикаторов используются заглавные буквы.
# undef
# undef идентефикатор
Эта директива отменяет текущее определение идентефикатора, заданного в директиве. Все последующие замены идентефикатора будут игнорироваться. Чаще всего используются с #defain для создания области в программе, в к-рой идентефикатор может быть сопоставлен с другим значением. Директива #undef может использоваться и по отношению к идентефикатору, к-рый ранее не был определен.
#undef getchar
int getchar (void) { - - -}
23.1,# include
# include “спецификатор_маршрута”
# include <спецификатор_маршрута>
Эта директива добавляет содержимое заданного файла включения к другому файлу так, как если бы этоот файл появился в точке, где записана директива. Данные форматы отличаются способом поиска препроцессора включаемого файла. Если спецификатор_маршрута не полный и заключен в “ ”, то препроцессор начинает поиск в текущем рабочем каталоге. Если в этом каталоге файл не найден или <спецификатор_маршрута>, то поиск файла включения осуществляется в стандартных системных каталогах.
23,2,.# include
Включаемые файлытакже могут содержать директива препроцессора. Допускается до 10 уровней вложенности включаемых файлов. Файлы включения полезны для объявления внешних переменных, составных типов данных, определенных констант и макроопределений.