Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры прога 2.docx
Скачиваний:
2
Добавлен:
18.09.2019
Размер:
83.31 Кб
Скачать

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 - указатель констант.

Операция & применяется только к объектам, расположенным в памяти : переменные, массивы и т.д. Ее операндом не могут быть выражения, константы, регистровые переменные.

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