Macro de la biblioteca C -va_start()

C 标准库 - <stdarg.h>Biblioteca estándar de C - <stdarg.h>

Descripción

va_startLa macro es de la biblioteca estándar de C<stdarg.h>una macro en el archivo de cabecera, utilizada para inicializar unva_listvariable, para acceder a un número variable de argumentos en una función de argumentos variables.

Macro de la biblioteca Cvoid va_start(va_list ap, last_arg)inicializaapla variable, yva_argyva_endse usa junto con la macro.last_argEs el último parámetro fijo conocido pasado a la función, es decir, el parámetro antes de los puntos suspensivos.

Esta macro debe ser llamada antes deva_argyva_endusarse.

Declaración

La siguiente es la declaración de la macro va_start().

void va_start(va_list ap, last);

Parámetros

  • va_list ap: Este es un tipo utilizado para acceder a argumentos variables. Se inicializará después de la llamada a la macro, para usarse en las subsiguientesva_arg: Este es el último parámetro fijo conocido antes de la lista de argumentos variables. Es decir, el último parámetro en la lista de parámetros de la función antes de que comiencen los argumentos variables.
  • lastValor de retorno

Valor de retorno

NA

Pasos de uso

  1. parámetro).lastDeclare una
  2. variable, para almacenar la información de la lista de argumentos variables.va_listUtilice
  3. la macro para inicializarva_startla variable.va_listUtilice
  4. la macro para obtener cada argumento variable uno por uno.va_argUtilice
  5. la macro para limpiarva_endla variable.va_listEjemplo

Ejemplo

Ejemplo

Ejemplo

#include <stdio.h>
#include <stdarg.h>

// Inicializa args para acceder a los argumentos variables
int sum(int count, ...) {
    int total = 0;
    va_list args;

    // Obtiene cada argumento variable uno por uno y lo acumula a total
    va_start(args, count);

    // Limpia args
    for (int i = 0; i < count; i++) {
        total += va_arg(args, int);
    }

    // Salida 6
    va_end(args);

    return total;
}

int main() {
    printf("Sum of 1, 2, 3: %d\n", sum(3, 1, 2, 3));  // Salida 22
    printf("Sum of 4, 5, 6, 7: %d\n", sum(4, 4, 5, 6, 7));  Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
    return 0;
}

Análisis

Sum of 1, 2, 3: 6
Sum of 4, 5, 6, 7: 22

Análisis

  • va_list args;variable de tipova_list, utilizada para almacenar la información de la lista de argumentos variables.args: Inicialice
  • va_start(args, count);para acceder a losargsargumentos variables que comienzan después.count: Utilice
  • total += va_arg(args, int);la macro para obtener el siguiente argumento variable, aquí se asume que todos sonva_argde tipo, y se acumula aintla variable.total: Limpie
  • va_end(args);, para liberar recursos y evitar comportamientos indefinidos.argsPrecauciones

Notas

  • va_startconjuntamente.va_list、va_argyva_endAl llamar a
  • después, debe llamar ava_startpara finalizar el procesamiento de los argumentos variables.va_endAntes de llamar a
  • debe asegurarse de que la lista de parámetros de la función tenga al menos un parámetro fijo.va_startEl parámetro es el último parámetro fijo antes de la lista de argumentos variables, que se utiliza para determinar desde dónde comenzar a procesar los argumentos variables.
  • lastBiblioteca estándar de C - <stdarg.h>

C 标准库 - <stdarg.h>Otras extensiones

IA pensando...