logo
ООП для Заоч / Пинчук Лозовская Программир на С

8.3. Функції зі змінною кількістю параметрів

Можна оголосити функцію зі змінною кількістю параметрів. Список параметрів такої функції розділяється на дві частини: фіксована частина списку і змінна частина. У заголовку функції змінна частина списку вказується трьома крапками, наприклад:

int F(int a, ...)

{ тіло функції

}

При побудові такої функції для обробки списку параметрів застосовуються засоби модуля <stdarg.h>. Фіксована частина списку параметрів не повинна бути пустою, змінна частина списку параметрів у заголовку функції позначається трьома крапками. Всі фактичні параметри змінної частини списку повинні мати однаковий тип. Розглянемо як це робиться на прикладі, у якому функція max(n,...) повертає значення найбільшого аргументу, причому перший параметр вказує кількість фактичних параметрів змінної частини списку, а самі параметри змінної частини списку мають тип int.

// Приклад 1

#include <syst.h>

#include <stdarg.h>

int max(int N, ...) // три крапки - змінна частина // списку параметрів

{ va_list p; // створено спеціальний покажчик p

va_start(p,N); // ініціалізація покажчика p

int i,x, M=va_arg(p,int); // M дорівнює значенню першого // параметра

for (i=1;i<N;i++) // змінної частини списку параметрів

{ x=va_arg(p,int); // x дорівнює значенню наступного // параметра

if (M<x) M=x;

}

return M;

}