Функция с переменным количеством параметров - C (СИ)
Формулировка задачи:
Почему выводит всякую ерунду
Листинг программы
- #include <stdio.h>
- #include "stdio.h"
- #include "stdlib.h"
- int sumf(int n, ...);
- int main()
- {
- printf("%d", sumf(5,5,5,5,5));
- return 0;
- }
- int sumf(int n, ...)
- {
- int *p = &n;
- int sum = 0;
- while (*p!=0)
- {
- sum += (*p);
- p++;
- }
- return sum;
- }
Решение задачи: «Функция с переменным количеством параметров»
textual
Листинг программы
- #include <stdarg.h>
- #include <stdio.h>
- #include "p99/p99_args.h"
- int P99_FSYMB(add)(P99_VA_ARGS(number)) {
- int result = 0;
- va_list arglist;
- va_start(arglist, number);
- for (size_t i = 0; i < number; i++) {
- result += va_arg(arglist, int);
- }
- va_end(arglist);
- return result;
- }
- #define add(...) P99_FSYMB(add)(P99_LENGTH_VA_ARG(__VA_ARGS__))
- int main() {
- int s = add(2, 7, 1, 8, 2, 8);
- printf("%d\n", s);
- }
Объяснение кода листинга программы
В данном коде определена функция с именем add
, которая принимает переменное количество аргументов.
Также в коде присутствует макрос add
, который вызывает функцию add
с количеством аргументов, равным количеству элементов в списке аргументов, переданных в add
.
В функции main
создается список аргументов, который передается в функцию add
с помощью макрос add
. Результат работы функции add
сохраняется в переменной s
и выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д