Функції з неоголошеними параметрами Інколи у функції потрібно передати деяке число фіксованих параметрів та невизначене число додаткових. В цьому випадку.

Презентация:



Advertisements
Похожие презентации
Вказівники на функції В мові С імя функції є константним вказівником на перший байт виконавчого коду функції. Це адреса оперативної памяті, яка відповідає.
Advertisements

Опрацювання структур у функціях Оскільки мова С інтерпретує структури як звичайні змінні, а не вказівники, можна передавати значення структури у функцію.
Обмін даними з файлами У компілятор мови С не включено спецзасобів для введення/виведення даних, тому обмін даними реалізовано через бібліотечні функції.
Цикли в мові С++ Цикл - це процес виконання певного набору команд деяку кількість разів.
Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове.
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Записи в Delphi і Pascal I саченко Анна 10- Б 1. Запис являє собою сукупність обмеженого числа логічно пов'язаних компонент, що належать до різних типів.
Програми з розгалуженнями.Команда IF Підготувала Крилік Анастасія 7-Д.
Мета уроку : повторити вивчений матеріал по темі «Функція»; вивчити поняття області визначення та області значень функції;навчитися шукати область визначення.
Консольне введення даних За призначенням клавіші клавіатури можна поділити на групи: – символьні; – клавіші керування: Home, End, …, Delete та чотири стрілки;
Обмін блоками даних Зчитати з потоку блок даних заданого розміру можна за допомогою функції size t fread (void *buf, size t size, size t n, FILE *fp);
Тема уроку : ФУНКЦІЯ Автор: Вчитель математики Карлівської ЗОШ І-ІІІ ступенів 3 Ігнатова Ю.І.
Запити Ассess ПЛАН Перехресний запит Доповнення таблиці Вилучення записів Створення нової таблиці.
Для здійснення інформа- ційних процесів компютеру треба вміти відрізняти одне повідомлення від іншого.
Основи алгоритмізації та програмування Підпрограми.
База даних (БД) це структурована сукупність взаємопов'язаних даних певної предметної області (реальних об'єктів, процесів, явищ тощо). це структурована.
Тема уроку: Проектування бази даних. Мета уроку:навчити створювати структуру нової бази даних на логічному та фізичному рівнях проектування, працювати.
Стислий екскурс в історію алгоритмічної мови С 1972 р. - співробітник фірми Bell Laboratories Деніс Рітчі створив алгоритмічну мову С р. - на мові.
Оператори. Введення і виведення даних. Оператор присвоювання Оператори це команди програми. Оператор присвоювання є основним оператором мови програмування.
Основи алгоритмізації та програмування Вказівка повторення. Цикли.
Транксрипт:

Функції з неоголошеними параметрами Інколи у функції потрібно передати деяке число фіксованих параметрів та невизначене число додаткових. В цьому випадку опис функції буде мати вигляд : тип ім'я_функції ( список параметрів,... ) Список аргументів включає в себе скінченне число обов'язкових параметрів (цей список не може бути порожнім), після якого на місці невизначеного числа параметрів ставиться три крапки. У викликах функцій зі змінною кількістю параметрів спочатку вказують значення обовязкових параметрів, а потім записують довільну кількість даних, що задають неоголошені параметри. Компілятор контролює тільки обовязкові фактичні параметри, типи яких відомі, а кількість і типи неоголошених параметрів не перевіряє. Прикладами бібліотечних функцій зі змінною кількістю параметрів є функції printf () та scanf ().

Реалізація функцій з неоголошеними параметрами базується на механізмі взаємодії фактичних і формальних параметрів через стек. Схема запису в стек значень фактичних параметрів визначається системою програмування. Бібліотека С містить спеціальні функції-макроси, задекларовані в заголовному файлі для доступу до неоголошених параметрів, незалежно від конкретної програмно-апаратної організації збереження параметрів. Визначаються – вказівник з типом va_list для звертання до необовязкових параметрів і три макроси: va_start, va_arg, va_end. Макрос va_start має синтаксис: void va_start(va_list ap, lastfix); Цей макрос починає роботу зі списком, встановлюючи його покажчик ap на перший неоголошений параметр. Другим аргументом вказується імя останнього з обовязкових параметрів.

Макрос va_arg має синтаксис: void va_arg(va_list ap, type); Цей макрос повертає значення наступного (чергового) аргументу зі списку. Другий аргумент задає тип поточного неоголошеного параметра. Перед викликом va_arg значення ap повинне бути встановлене викликом va_start або va_arg. Кожний виклик va_arg переводить покажчик на наступний аргумент. Макрос va_end має синтаксис: void va_end(va_list ap); Даний макрос завершує роботу зі списком, звільняючи пам'ять. Приклад. #include #include void sum (char *msg,...) {

int total = 0; va_list ap; int arg; va_start(ap, msg); while ((arg = va_arg(ap, int)) != 0) { total += arg; } printf(msg, total); va_end(ap); } int main(void) { sum("Сума рівна %d\n", 1,2,3,4,0); return 0; }