Funciones variádicas en C

Las funciones variádicas son funciones que pueden tomar un número variable de argumentos . En programación C , una función variádica agrega flexibilidad al programa. Toma un argumento fijo y luego se puede pasar cualquier número de argumentos. La función variádica consiste en al menos una variable fija y luego una elipsis (…) como último parámetro.

Sintaxis:

int function_name(data_type variable_name, ...);

Se puede acceder a los valores de los argumentos pasados ​​a través del archivo de encabezado denominado como:

#include <stdarg.h>

<stdarg.h> incluye los siguientes métodos:

Métodos

Descripción

va_start(va_list ap, argN) Esto permite el acceso a los argumentos de la función variádica.
va_arg(va_list ap, tipo) Éste accede al siguiente argumento de la función variádica.
va_copy(va_list destino, va_list src) Esto hace una copia de los argumentos de la función variádica.
va_end(va_list ap) Esto finaliza el recorrido de los argumentos de la función variádica.

Aquí, va_list contiene la información que necesitan va_start , va_arg , va_end y va_copy .

Programa 1:

El siguiente programa simple en C demostrará el funcionamiento de la función variádica AddNumbers() :

C

// C program for the above approach
 
#include <stdarg.h>
#include <stdio.h>
 
// Variadic function to add numbers
int AddNumbers(int n, ...)
{
    int Sum = 0;
 
    // Declaring pointer to the
    // argument list
    va_list ptr;
 
    // Initializing argument to the
    // list pointer
    va_start(ptr, n);
 
    for (int i = 0; i < n; i++)
 
        // Accessing current variable
        // and pointing to next one
        Sum += va_arg(ptr, int);
 
    // Ending argument list traversal
    va_end(ptr);
 
    return Sum;
}
 
// Driver Code
int main()
{
    printf("\n\n Variadic functions: \n");
 
    // Variable number of arguments
    printf("\n 1 + 2 = %d ",
           AddNumbers(2, 1, 2));
 
    printf("\n 3 + 4 + 5 = %d ",
           AddNumbers(3, 3, 4, 5));
 
    printf("\n 6 + 7 + 8 + 9 = %d ",
           AddNumbers(4, 6, 7, 8, 9));
 
    printf("\n");
 
    return 0;
}
Producción: 

Variadic functions: 

 1 + 2 = 3 
 3 + 4 + 5 = 12 
 6 + 7 + 8 + 9 = 30

 

Programa 2: a continuación se muestra el programa en C que consta de la función variádica LargestNumber() :

C

// C program for the above approach
#include <stdarg.h>
#include <stdio.h>
 
// Variadic function to find the largest number
int LargestNumber(int n, ...)
{
    int max = 0;
 
    // Declaring pointer to the
    // argument list
    va_list ptr;
 
    // Initializing argument to the
    // list pointer
    va_start(ptr, n);
 
    for (int i = 0; i < n; i++) {
 
        // Accessing current variable
        // and pointing to next
        int temp = va_arg(ptr, int);
        max = temp > max ? temp : max;
    }
 
    // End of argument list traversal
    va_end(ptr);
 
    return max;
}
 
// Driver Code
int main()
{
    printf("\n\n Variadic functions: \n");
 
    // Variable number of arguments
    printf("\n %d ",
           LargestNumber(2, 1, 2));
 
    printf("\n %d ",
           LargestNumber(3, 3, 4, 5));
 
    printf("\n %d ",
           LargestNumber(4, 6, 7, 8, 9));
 
    printf("\n");
 
    return 0;
}
Producción: 

Variadic functions: 

 2 
 5 
 9

 

Publicación traducida automáticamente

Artículo escrito por opeeyum y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *