me encontré con una definición de función:Pregunta sobre una definición de función (tres puntos en los parámetros ..)
char* abc(char *f, ...)
{
}
¿Qué significan los tres puntos?
me encontré con una definición de función:Pregunta sobre una definición de función (tres puntos en los parámetros ..)
char* abc(char *f, ...)
{
}
¿Qué significan los tres puntos?
Las elipsis significan que hay una cantidad variable de argumentos a continuación. El lugar donde los habrá utilizado (quizás sin darse cuenta) es la familia de funciones printf
.
Te permiten crear funciones de ese estilo donde los parámetros no se conocen de antemano, y puedes usar las funciones varargs (va_start
, va_arg
y va_end
) para obtener los argumentos específicos.
Este enlace here tiene un buen tratado sobre el uso printf
de listas de argumentos variables.
Se llaman elipsis y significan que la función puede tomar un número indeterminado de parámetros. Su función probablemente se puede llamar así:
abc("foo", 0);
abc("foo", "bar", 0);
Tiene que haber una manera de indicar el final de la lista. Esto se puede hacer utilizando el primer parámetro, como ion 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 malas en C++, como no se pueden realizar comprobaciones de tipos o conversiones definidas por el usuario en los parámetros
Esto es lo que se llama una función varargs o una función de argumentos variable en C.
Uno es probable que reconocer es printf.
Wikipedia en vararg functions in C++.
gracias a todos por su rápida respuesta ... esta comunidad es impresionante ... – ashishsony
bueno ... esta pregunta muestra que no estoy prestando atención mientras he estado programando el último año profesionalmente, ya que he usado printf, scanf tantas veces ... pero nunca me hizo clic en cómo estas funciones pueden aceptar argumentos ilimitados. Necesito hacerme estas preguntas mucho más a menudo. – ashishsony