C - Argumentos variables
A veces, puede encontrarse con una situación, en la que desea tener una función, que puede tomar una cantidad variable de argumentos, es decir, parámetros, en lugar de una cantidad predefinida de parámetros. El lenguaje de programación C proporciona una solución para esta situación y se le permite definir una función que puede aceptar una cantidad variable de parámetros según sus requisitos. El siguiente ejemplo muestra la definición de dicha función.
int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); }
Cabe señalar que la función func() tiene su último argumento como puntos suspensivos, es decir, tres puntos (... ) y el que está justo antes de los puntos suspensivos siempre es un int que representará el número total de argumentos de variable pasados. Para utilizar dicha funcionalidad, debe utilizar stdarg.h archivo de encabezado que proporciona las funciones y macros para implementar la funcionalidad de argumentos variables y seguir los pasos dados −
-
Defina una función con su último parámetro como puntos suspensivos y el que está justo antes de los puntos suspensivos siempre es un int que representará el número de argumentos.
-
Crear una va_list escriba la variable en la definición de la función. Este tipo se define en el archivo de encabezado stdarg.h.
-
Usar int parámetro y va_start macro para inicializar la va_list variable a una lista de argumentos. La macro va_start se define en el archivo de encabezado stdarg.h.
-
Utilice va_arg macro y va_list variable para acceder a cada elemento en la lista de argumentos.
-
Utilice una macro va_end para limpiar la memoria asignada a va_list variables.
Ahora sigamos los pasos anteriores y escribamos una función simple que pueda tomar el número variable de parámetros y devolver su promedio −
Demostración en vivo#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)); }
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado. Cabe señalar que la función average() ha sido llamado dos veces y cada vez que el primer argumento representa el número total de argumentos variables que se pasan. Solo se usarán puntos suspensivos para pasar un número variable de argumentos.
Average of 2, 3, 4, 5 = 3.500000 Average of 5, 10, 15 = 10.000000
Lenguaje C
- Tipos de funciones definidas por el usuario en programación C
- Clase de almacenamiento C
- Pasar arreglos a una función en C
- Argumentos de la función de Python
- Variables y tipos de C++:int, double, char, string, bool
- C Variable, tipos de datos, constantes
- Asignaciones de Verilog
- C - Variables
- C - Funciones
- C - Punteros
- C - Campos de bits