- •1.1 Арифметические операторы.
- •1.3. Логические операторы
- •1.6. Выражения
- •1.7. Преобразование типов
- •2.6. Вложение else if
- •2.7. Инструкция switch
- •3.1. Оператор цикл for
- •3.4. Цикл do-while
- •3.3. Цикл while
- •4.1. Алгоритм Евклида
- •4.2. Алгоритмы обмена чисел
- •4.3.А. Для заданного натурального числа определить количество единичных бит в его представлении.
- •4.3.B. Найти количество повторений каждой цифры у заданного натурального числа
- •4.3.C. Перевод из 10-й с/с в 2..9
- •5.1. Объявление и определение функций .
- •5.2. Функция main()
- •5.3. Функция main() с параметрами
- •5.4. Обмен данными между функциями. Возвращаемое значение
- •5.5. Параметры функции
- •5.6.A. Функция перевода числа в различные нумерации
- •5.6.C. Поиск количества единичных бит в двоичном представлении числа.
- •5.6.E. Вычисление n!
- •5.6.F. Вычисление сочетаний из n по m без факториала
- •7. Функции форматированного вывода
- •7. Функции форматированного вывода (продолжение)
- •8. Функции форматированного ввода
- •9. Функции общего назначения
- •Void srand(unsigned int );
- •11.1. Объявление и инициализация массива
- •11.3. Ввод-вывод массивов
- •11.4 Операции над элементами массива
- •11.5. Передача массивов функциям
- •11.6. Обработка одномерных и двумерных массивов
- •11.7. Поиск элемента с заданными характиристиками
- •12.1. Переменные-указатели
- •12.2. Oператоры для работы с указателями.
- •12.3. Арифметические действия с указателями.
- •12.4. Динамическое распределение памяти
- •12.5. Указатели и массивы
- •12.6. Массивы-параметры
- •12.7. Указатели на константы и константные указатели.
- •12.8. Указатели на функции.
- •12.9. Алгоритмы преобразование и перестановки .
- •12.10. Алгоритмы расширение и сжатие массивов
- •13.1Сортировка пузырьком
- •13.2Сортировка Вставками
- •13.3Сортировка выбором
- •13.4Линейный поиск
- •Int sprintf(char *buffer, const char *format, ...);
- •15 Цели введения новых типов:
- •Int fclose(file* stream);
- •Int feof(file* stream);
- •18. Функции и разработка программ
- •18.1. Функции с переменным количеством параметров
- •18.2. Глобальные и локальные переменные, область видимости и время существования.
- •18.3. Спецификаторы классов памяти.
- •18.4. Компоновка нескольких файлов в одну программу
- •18.5. Директивы препроцессора
- •Задача Иосифа Флавия
- •Задача о рюкзаке
- •Классическая архитектура компьютера
- •Процессор - программно-управляемое устройство
- •Регистры, назначение и характеристика
- •Xchg приемник, источник
- •23Команды сравнения:
- •25 Команды организации циклов:
- •26 Команды пересылки:
- •27 Логические команды:
- •28 Команды обработки строк
- •Префиксы повторения
- •29.1. Регистры сопроцессора
- •29.2. Команды пересылки данных
- •29.3. Арифметические команды
- •29.4. Команды сравнения чисел
- •29.5. Трансцендентные команды
- •29.6. Управляющие команды
- •30.1. Команда call
- •23.6. Внешние подпрограммы
- •23.7.Компилятор masm
18. Функции и разработка программ
18.1. Функции с переменным количеством параметров
В языке C допускаются функции с переменным количеством параметров. В этом случае в конце списка параметров ставится “…” При этом предполагается, что явно указан хотя бы один параметр. int print (int n, char * str , …);
Для обработки функции с переменным количеством параметров используется переменная типа va_list и три макрокоманды из библиотеки stdarg.h: va_start ( va_list ap , last_arg); Инициализирует параметр ap , где last_arg – последний известный фиксированный элемент функции.
type va_arg (va_list ap, type); Возвращает следующий аргумент типа type, ap должен быть предварительно инициализирован макрокомандой va_start; void va_end (va_last ap); Обеспечивает правильную работу инструкции return, после вызова va_end работа макрокоманды va_arg невозможна.
18.2. Глобальные и локальные переменные, область видимости и время существования.
Если переменная объявлена вне какой-либо функции, то она называется глобальной. Если переменная объявлена внутри функции, то она называется локальной
Область видимости и время существования переменной определяются спецификаторами классов памяти.
Aвтоматические переменные auto существуют - временно, область действия - локальная;
Глобальная переменная с определенным именем может быть определена единожды, продолжительность существования внешней переменной постоянная, область действия глобальная (все файлы)
Переменные типа static имеют такую же область действия, как автоматические переменные, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.
Регистровые переменные запоминаются в регистрах центрального процессора. Спецификатор static можно применять только в локальных переменных и параметрах функций.
18.3. Спецификаторы классов памяти.
Спецификаторы классов памяти указывают как долго должна храниться объявленная переменная и определяют область видимости этой переменной. Существуют 4 спецификатора классов памяти: · auto · extern · static · register.
Автоматические переменные аuto – указывает, что переменная, определенная внутри функции, является локальной. Этот спецификатор используется по умолчанию. Aвтоматические переменные существуют - временно, область действия - локальная; Переменная, описанная вне функции, является внешней. Extern – указывает, что переменная является глобальной и определена в другом файле программы. Глобальная переменная с определенным именем может быть определена единожды, продолжительность существования внешней переменной постоянная, область действия глобальная (все файлы)
Static – для глобальной переменной ограничивает область её видимости только файлом, в котором она определена; для локальной – сохраняет её и значение до конца работы, это означает, что такие переменные остаются в работе.
Register – указывает, что значение переменной должно храниться в регистрах процессора. Этот спецификатор можно применять только в локальных переменных и параметрах функций.Регистровые переменные запоминаются в регистрах центрального процессора, где доступ к ним и работа с ними выполняются гораздо быстрее, чем в памяти.