Пример работы функции с переменным количеством переменных (1115157)
Текст из файла
Пример работы функции с переменным количеством аргументов.
#include <stdio.h>
#include <stdarg.h>
void sum(char *msg, ...)
{
va_list arguments;
int arg;
int result;
va_start(arguments, msg);
result = 0;
while ((arg = va_arg(arguments, int)) != 0) {
result += arg;
}
printf(msg, result);
va_end(arguments);
}
int main()
{
sum(" 1 + 2 + 3 + 4 = %d\n", 1, 2, 3, 4, 0);
return 1;
}
Назначение
Позволяет использовать переменный список аргументов.
Синтаксис
#include <stdarg.h>
void va_start(va_list param, start_arg);
type va_arg(va_list param, type);
void va_end(va_list param);
Замечания
Макросы семейства va_... позволяют осуществить доступ к переменному списку аргументов. Эти макросы используются для
поэлементной обработки списка аргументов, когда вызываемой функции неизвестно ни количество, ни типы передаваемых ей аргументов.
Файл-заголовок stdarg.h содержит описание одного типа (va_list) и трех макросов (va_start, va_arg, va_end).
va_list
-------
Внутренняя структура, содержащая информацию для работы va_start, va_arg и va_end.
va_start
--------
Этот макрос сохраняет в структуре param значение указателя на первый элемент списка аргументов, который будет передан функции.
va_start имеет два параметра: param и start_arg
*) param - внутренняя структура;
*) start_arg - имя фиксированного параметра (последнего, если их несколько), передаваемого вызываемой функции.
va_start должна быть вызвана до первого обращения к va_arg или va_end.
va_arg
------
Возвращает аргументы списка.
Этот макрос расширяется в выражение, которое имеет тот же тип и значение, что и следующий аргумент type, который должен быть передан функции (один из аргументов переменного списка). Переменная param в va_arg должна быть той же самой переменной param, которая инициализировалась в va_start.
При первом обращении к va_arg, она возвращает первый аргумент списка. При каждом последующем обращении к va_arg, она будет возвращать следующий аргумент из списка. Она осуществляет это посредством использования первого значения param, после чего значение param увеличивается до значения указателя на следующий элемент. va_arg использует аргумент type как для получения текущего элемента, так и для коррекции указателя на следующий элемент. При каждом обращении к va_arg она изменяет значение указателя param так, чтобы он указывал на следующий аргумент списка.
va_end
------
Обеспечивает нормальное завершение работы.
va_end должен быть вызван после того, как va_arg прочитает все аргументы списка; игнорирование этого может послужить причиной странного и непредвиденного поведения вашей программы из-за «порчи» param.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.