resueltos - programa de preguntas y respuestas en c++
Pregunta sobre la definición de una función(tres puntos en los parámetros...) (4)
Me encontré con una definición de función:
char* abc(char *f, ...)
{
}
¿Qué significan los tres puntos?
Esto es lo que se llama una función de varargs o una función de argumento variable en C.
Uno que probablemente reconozca es printf.
Los puntos suspensivos significan que hay una cantidad variable de argumentos a continuación. El lugar donde los habrá utilizado (quizás sin darse cuenta) son las funciones de la familia printf
.
Le permiten crear funciones de ese estilo donde los parámetros no se conocen de antemano, y puede usar las funciones de va_start
( va_start
, va_arg
y va_end
) para obtener los argumentos específicos.
Este enlace here tiene un buen tratado sobre el uso de printf
de las listas de argumentos variables.
Se les llama elipsis y significan que la función puede tomar un número indeterminado de parámetros. Tu función probablemente se puede llamar así:
abc( "foo", 0 );
abc( "foo", "bar", 0 );
Debe haber una forma de indicar el final de la lista. Esto se puede hacer usando el primer parámetro, como ión a printf (cadena de formato 0, o por un terminador especial, cero en el ejemplo anterior).
Las funciones con un número variable de parámetros se consideran incorrectas en C ++, ya que no se puede realizar ninguna comprobación de tipo o conversiones definidas por el usuario en los parámetros.
Wikipedia en vararg funciones en C ++ .