va_start(param_pt, number); // Запуск макроса va_start, для получения адреса number
va_arg(param_pt, int) – извлечение целого числа из памяти, на которую в данный момент показывает param_pt
В завершении работы с макросами необходимо всё «убрать и подчистить». Для этого используется макрос:
va_end(param_pt);
Использование Макросов позволяет писать программы для извлечения из памяти последовательно записанные там аргументы (параметры) функции, независимо от Типа аргументов. Но тип должен указать программист.
5) программа Dc_5.с
Создание указателя на функцию.
Машинные коды для выполнения функции хранятся в памяти компьютера.
Язык С позволяет работать с любым объектом (объект - то, что хранится в памяти компьютера) либо по его имени, либо по его адресу в памяти , используя косвенное обращение – через указатели.
Такой указатель должен иметь тип. Тип можно взять из типа «прототипа функции».
Таким образом можно построить указатель на функцию. Указатель на функцию может работать с разными функциями, имеющими одинаковый прототип.
Это и демонстрирует пример.
Посмотрите, что в примере вызываются функции через УКАЗАТЕЛЬ.
Попробуйте, как работают закоментированные строки.
Объясните почему это так.
6) программа Dc_6.*
Пример, как записываются структуры на Си.
Создается новый тип данных - date
structdate date - это название нового типа данных
{
intmonth; - члены (элементы,поля) структуры
intday;
intyear;
}; - обязательно наличие ; - для определения нового типа данных
structdatedate1, *date_point; - создание объекта типа date (выделение под него памяти) в С,
создание указателя для такого типа
(исправьте строку в программе перед компиляцией.)
date1.day=5; так можно напрямую обратиться к члену структуры
date_point = &date1; указатель можно направить на определенный объект
Тогда с таким объектом можно работать через указатель, используя косвенную адресацию:
(*date_point).year = 1938;
В С++ появилясь операция «стрелка» -> , позволяющая записать такое обращение короче:
date_point -> month = 10;
Вывод полей структуры осуществлен с помощью функции printf
7) программа Dc_7.*
Создание списка (множества) именованных констант
enum day{mon=1, tue, wed, thu, sat=6};
Значения не введенных констант на 1 превышат предыдущую константу
mon= 1
tue = 2
wed= 3
thu = 4
sat = 6
enum day{mon=1, tue, wed=1, thu, sat=0};
Значения не введенных констант на 1 превышат предыдущую константу
mon = 1
tue = 2
wed = 1
thu = 2
sat = 0
Перечисление также вводит новый тип данных.
daya, b, c;
Это «ограниченный» тип данных.
Попробуйте, как работают все закоментированные строки.
8) программа Dc_8.*
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.