2009-03-01 21 views
49

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?

+6

gracias a todos por su rápida respuesta ... esta comunidad es impresionante ... – ashishsony

+1

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

Respuesta

38

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.

11

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

3

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.

Cuestiones relacionadas