Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Dominando Argumentos Variables en C: Guía Práctica

A veces puede surgir la necesidad de tener una función que acepte un número variable de argumentos, en lugar de un número predefinido de parámetros. El lenguaje C ofrece una solución para esta situación y permite definir una función que acepte un número variable de parámetros según sus necesidades. El siguiente ejemplo muestra la definición de tal función:

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

Debe observarse que la función func() tiene su último argumento como elipsis, es decir, tres puntos (...) y el anterior a la elipsis es siempre un int que representará el número total de argumentos variables pasados. Para usar esta funcionalidad, necesita usar el archivo de cabecera stdarg.h que proporciona las funciones y macros para implementar la funcionalidad de argumentos variables y seguir los pasos dados:

Ahora sigamos los pasos anteriores y escribamos una función simple que acepte un número variable de parámetros y devuelva su promedio:

#include <stdio.h>
#include <stdarg.h>
double average(int num, ...) {
    va_list valist;
    double sum = 0.0;
    int i;
    /* inicializa valist para num número de argumentos */
    va_start(valist, num);
    /* accede a todos los argumentos asignados a valist */
    for (i = 0; i < num; i++) {
        sum += va_arg(valist, int);
    }
    /* limpia memoria reservada para 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));
}

Al compilar y ejecutar, produce el siguiente resultado. Debe observarse que la función average() ha sido llamada dos veces y cada vez el primer argumento representa el número total de argumentos variables que se pasan. Solo la elipsis se usará 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

  1. Cuatro patrones probados para funciones definidas por el usuario en C
  2. Entendiendo las clases de almacenamiento en C: ámbito, vida y rendimiento
  3. Cómo pasar arrays 1D y 2D a funciones en C – Guía práctica
  4. Variables y tipos de datos en C++: Guía experta sobre int, double, char, string, bool
  5. Variables, tipos de datos y constantes en C – Guía práctica
  6. Entendiendo las variables en C: Tipos, reglas de nomenclatura y gestión de memoria
  7. Dominando funciones en C: Estructura, declaración y mejores prácticas
  8. Dominando punteros en C: Pasos prácticos para programación avanzada
  9. Uso eficiente de memoria con campos de bits en C
  10. Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
  11. Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto