Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

C - Переменные аргументы

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

int func(int, ... ) {
   .
   .
   .
}

int main() {
   func(1, 2, 3);
   func(1, 2, 3, 4);
}

Следует отметить, что функция func() имеет последний аргумент в виде многоточия, то есть три точки (... ), а непосредственно перед многоточием всегда int который будет представлять общее число переданных аргументов переменной. Чтобы использовать такую ​​функциональность, вам нужно использовать stdarg.h заголовочный файл, который предоставляет функции и макросы для реализации функциональности переменных аргументов и выполнения заданных шагов —

Теперь давайте выполним описанные выше шаги и напишем простую функцию, которая может принимать переменное количество параметров и возвращать их среднее значение —

Живая демонстрация
#include <stdio.h>
#include <stdarg.h>

double average(int num,...) {

   va_list valist;
   double sum = 0.0;
   int i;

   /* initialize valist for num number of arguments */
   va_start(valist, num);

   /* access all the arguments assigned to valist */
   for (i = 0; i < num; i++) {
      sum += va_arg(valist, int);
   }
	
   /* clean memory reserved for valist */
   va_end(valist);

   return sum/num;
}

int main() {
   printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
   printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}

Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат. Следует отметить, что функция average() был вызван дважды, и каждый раз первый аргумент представляет собой общее количество передаваемых переменных аргументов. Для передачи переменного количества аргументов будут использоваться только многоточия.

Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

Язык C

  1. Типы пользовательских функций в программировании на C
  2. Класс хранения C
  3. Передать массивы функции в C
  4. Аргументы функции Python
  5. Переменные и типы С++:int, double, char, string, bool
  6. C Переменная, типы данных, константы
  7. Верилог Задания
  8. С — переменные
  9. С - Функции
  10. C — указатели