Функции с переменным количеством аргументов

В языке Си допустимы функции, количество аргументов у которых при компиляции функции не фиксировано. Количество и тип аргументов становится известным только в момент вызова функции, когда явно задан список фактических аргументов (параметров). При определении и описании таких функций, имеющих списки параметров неопределенной длины. Спецификация формальных параметров заканчивается запятой и многоточием:

тип имя(спецификация-явных-параметров,...);

Здесь тип - тип возвращаемого функцией значения; имя - имя функции.

Спецификация явных параметров - список спецификации параметров, количество и типы которых фиксированы и известны в момент компиляции. Эти параметры обязательны. Каждая функция с переменным количеством параметров должна иметь хотя бы один обязательный параметр. После списка явных (обязательных) параметров ставится запятая, а затем - многоточие. Компилятор знает, что дальнейший контроль соответствия количества и типов параметров при обработке вызова функции проводить не нужно. Чтобы функция с переменным количеством параметров могла воспринимать параметры различных типов, необходимо в качестве исходных данных каким-то образом передавать ей информацию о типах параметров.

Пример:

#include <stdio.h>/* Функция суммирует значения своих параметров */long summa(int m,...) /*m - число параметров*/{ int *p=&m; /*настроили указатель на параметр m*/ long t=0; for(;m>=0;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));}

Лекция 10. Классы памяти и разработка программ

Классы памяти и область действия. Автоматические переменные. Внешние переменные. Статические переменные. Внешние статические переменные. Регистровые переменные.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: