Функции с переменным количеством аргументов
В языке Си допустимы функции, количество аргументов у которых при компиляции функции не фиксировано. Количество и тип аргументов становится известным только в момент вызова функции, когда явно задан список фактических аргументов (параметров). При определении и описании таких функций, имеющих списки параметров неопределенной длины. Спецификация формальных параметров заканчивается запятой и многоточием:
тип имя(спецификация-явных-параметров,...);
Здесь тип - тип возвращаемого функцией значения; имя - имя функции.
Спецификация явных параметров - список спецификации параметров, количество и типы которых фиксированы и известны в момент компиляции. Эти параметры обязательны. Каждая функция с переменным количеством параметров должна иметь хотя бы один обязательный параметр. После списка явных (обязательных) параметров ставится запятая, а затем - многоточие. Компилятор знает, что дальнейший контроль соответствия количества и типов параметров при обработке вызова функции проводить не нужно. Чтобы функция с переменным количеством параметров могла воспринимать параметры различных типов, необходимо в качестве исходных данных каким-то образом передавать ей информацию о типах параметров.
Пример:
#include <stdio.h> /* Функция суммирует значения своих параметров */ long summa(int m,...) /*m - число параметров*/ { int *p=&m; /*настроили указатель на параметр m*/ long t=0; for(;m;m--) t+=*(++p); return t; } void main() { printf("\n summa(2,6,4)=%d",summa(2,6,4)); printf("\n summa(6,1,2,3,4,5,6)=%d", summa(6,1,2,3,4,5,6)); }
on_load_lecture()




« |
1
|
2
|
3
|
4
|
вопросы | »
учебники
|
для печати и PDA



Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru © 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование |