Інформатика
Функції : Функції із змінним числом параметрів
 

Функції із змінним числом параметрів

     Інколи у функції потрібно передати деяке число фіксованих параметрів та невизначене число додаткових. В цьому випадку опис функції буде мати вигляд :
тип ім'я_функції(список параметрів, ...)
     Список аргументів включає в себе скінченне число обов'язкових параметрів (цей список не може бути порожнім), після якого на місці невизначеного числа параметрів ставиться три крапки. Для роботи з цими параметрами у файлі stdarg.h визначений тип списку 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);.
Приклад 10. Даний макрос завершує роботу зі списком, звільняючи пам'ять.
#include <stdio.h>
#include <stdarg.h>
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()
{
     sum("Сума 1+2+3+4 дорівнює %d\n", 1,2,3,4,0);
     return 0;
}

 
© 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.ua
Розроблено за допомогою LERSUS