
- •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,Последовательный и прямой доступ в поток.
24,Директивы препроцессора. Препроцессорные операции.
Препроцесор – текстовый процессор, предназначеный для обработки исходного файла на первой стадии компиляции. Управление им осуществляется при помощи директив препроцессора, к-рые инструктируют препроцессор о выполнении определенных действий (замена лексем в тексте, вставки внешнего файла текста,и т.п.) Обработанный препроцессором текст уже не содержит директив препроцессора и обрабатывается компилятором.
Директива прапроцессора обозначается символом #, к-рый должен быть первым непробельным символом в строке символов
Препроцессорные операции
Если в программе имеется макроопределение с параметрами, то они наз формальными параметрами и в тексте подстановки могут быть произведены перпроцессорные операции: 1)образование строки #;
2)операция объединения лексем #
1.если предшествует формальному параметру в тексте подстановки, то соответствующий фактический аргумент, передаваемый макрокомандой, будет заключаться в “” и считаться строковым литератором. Такую конструкцию можно использовать для конкотенации с другими строковыми литераторами.
2.операция объединения лексем понимается препроцессором как операция конкотенации аргументов (обязательно два аргумента)
25.1, Указатели.Операции &,*.
В языке Си реализованы два альтернативных способа доступа к переменным:
1)по имени
2)механизм указателя
Указатель – это переменная, содержащая адрес другой переменной. Использование указателей позволяет создавать более быстрые и компактные программы и необходимо в следующих случаях :
1)при динамическом распределении памяти
2)передача указателя в качестве аргумента ф-ции позволяет в вызываемой ф-ции изменить значение вызывающей программы
3)использование указателя явл альтернативным по отношению к использованию индексов способом доступа к элементам массива.
4)можно определить указатель на ф-цию, что позволяе использовать его для вызова разных ф-ций.
5) при работе с файлами
Объявить указатель можно по следующему формату:
Спецификатор_типа * идентефикатор;
Так запись char*cptr означает,что объявлена переменная cptr, к-рая явл указателем на объект типа char.
После объявления указателя под него выделяется память, но пока он ни на что не указывает. До тех пор пока указателю не будет присвоено конкретное значение, его нельзя использовать в программе. Размер указателя = 2-4 байта
25.2, Указатели.Операции &,*.
В языке Си определены две операции для работы с указателями :
&(адрес) – унарная
*(разадресация или раскрытие ссылки)- унарная
Операция & используется для получения адреса какого-либо объекта
Следует различать два понятия : указатель переменная и указатель константа.
указатель переменная – это переменная для хранения адреса объекта
указатель константа - это значение адреса оперативной памяти
Пр: char *cptr,c;
Int *iptr, I;
cptr= &c;
iptr = &I;
В этом примере iptr -указатель переменная , а &I - указатель констант.
Операция & применяется только к объектам, расположенным в памяти : переменные, массивы и т.д. Ее операндом не могут быть выражения, константы, регистровые переменные.
Доступ к объекту через указатель осуществляется с помощью операции *, к-рая рассматривает свой операнд как адрес некоторого объекта и использует этот адрес для выборки содержимого. Типом результата операции * явл тип объекта, адресуемого указателем. Указатель всегда должен указывать на объект того же типа с к-рым он объявлен.