300_____________________________Часть II. Программирование на C++

h03001.jpg

^include <stdio.h> #include <stdarg.h> ftinclude <iostream.h>

int Addlnts(int x, . . .) ;

void main() {

int Result;

Result = Addlnts(5,8,2,5,99,4,5);

cout « "Возвращаемое Addlnts значение: " « Result « endl;

}

int Addlnts(int x,...) (

int Sum = x;

va_list ListPtr;

int CurArg;

va_start(ListPtr, x) ;

while ((CurArg = va_arg(ListPtr, int)) != -1) (

Sum += CurArg;

} va end(ap) ;

return (Sum) ;

}

Функции Addlnts () можно передать неограниченное количество аргументов. Однако при этом должен присутствовать по крайней мере один фиксированный аргумент, служащий "якорем" для типа данных va_list. Последний (если их несколько) фиксированный аргумент передается макросу va_start для указания начала списка аргументов.

Использование макросов va_ позволяет добиться гибкости для ваших функций. Создавая функции, вы не будете жестко скованы числом их параметров.

Далее...

Теперь вы в достаточной мере изучили некоторые возможности Borland C++, чтобы попробовать их на практике. В процессе экспериментов с различными функциями и приемами программирования C++, у вас неизбежно