|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пример перегрузки функцийПриведем пример функции S 1 с двумя параметрами х, у, работающая в зависимости от типа передаваемых аргументов, следующим образом: – если тип параметров целочисленный, функция S 1 складывает их значения и возвращает полученную сумму; – если тип параметров long, функция S 1 перемножает их значения и возвращает полученное произведение; – если тип параметров вещественный, функция S 1 делит их значения и возвращает частное от деления. # include <stdio.h> int S1 (int x, int y) { return x+y; } long S1 (long x, long y) { return x*y; } double S1 (double x, double y) { return x/y; } int main () { int a = 1, b = 2, c; long i = 3, j = 4, k; double x = 10, y = 2, z; c=S1(a, b); k=S1(i, j); z=S1(x, y), printf("\n c = %d; k = %ld; z = %lf. \n", c, k, z); return 0; } В результате получим: c = 3; k = 12; z = 5.000000.
Функции с переменным числом параметров Многоточие в списке параметров пользовательской функции используется тогда, когда число аргументов заранее неизвестно. При этом неопределенное количество параметров можно указать в ее прототипе следующим образом: void f1 (int a, double b, …); Такая запись указывает компилятору на то, что за обязательными фактическими аргументами для параметров a и b могут следовать, а могут и не следовать другие аргументы при вызове этой функции. Перечислим основные особенности использования данного механизма. 1. Используется несколько макрокоманд для доступа к параметрам таких функций, это: va_list и va_start – макрокоманды подготовки доступа к параметрам; va_arg – использование параметров; va_end – отчистка перед выходом. Они объявлены в заголовочном файле stdarg.h. 2. Такая функция должна иметь минимум один параметр (именованный) для передачи ей количества передаваемых аргументов. 3. Для макроса va_start необходимо передать два аргумента – имя списка параметров, который задает va_list и их количество. 4. Нарушать указанный порядок макрокоманд нельзя. Иначе можно получить непредсказуемые последствия. 5. Для макроса va_arg нужно помимо имени списка параметров передать и предполагаемый тип. При несоответствии типов – ошибка. Использование многоточий полностью выключает проверку типов параметров. Многоточие необходимо, только если изменяются и число параметров, и их тип. Следующий пример иллюстрирует эту возможность. #include <stdarg.h> #include <stdio.h> void f1(double s, int n...) { int v; va_list p; va_start(p, n); printf(" \n Double S = %lf ", s); for(int i=1; i<=n; i++) { v = va_arg(p, int); printf("\n Argument %d = %d ", i, v); } va_end(p); } void main(void) { f1(1.5, 3, 4, 5, 6); } В результате получим: Double S = 1.500000 Argument 1 = 4 Argument 2 = 5 Argument 3 = 6 Press any key to continue
Шаблоны функций Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |