Dev - C++ - pasar parametros curiosidad

 
Vista:

pasar parametros curiosidad

Publicado por prizzio (2 intervenciones) el 09/02/2006 16:50:46
Buenas.

Hoy me han hecho una pregunta sobre c y la verdad es que no la he acabado de entender. Me gustaria que me dijerais cual es la que creeis es la respuesta para ella.
La pregunta es la siguiente:

¿Se puede pasar una lista de parametos de longitud variabe en c?¿como? y en caso de no poderse, ¿como solucionarias esta necesidad?.

La verdad es que no se cual es la respuesta, si alguno sabeis alguna o creeis por donde van los tiros os agradeceria que me lo postearais.

Muchas gracias y un saludo.

Prizzio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pasar parametros curiosidad

Publicado por prizzio (2 intervenciones) el 10/02/2006 12:18:59
Este texto lo he sacado del foro d c "El rincon de C". La respuesta la escribio "rir3760" muchas gracias desde aqui por tu ayuda amigo.

Se pueden utilizar en C las funciones con un numero variable de argumentos ("variadic functions") pero con la limitacion de que al menos se debe pasar un argumento "con nombre" y despues de este van los argumentos opcionales. Para esto se utilizan las macros va_start, va_arg y va_end que estan definidas en 'stdarg.h'.

EJEMPLO

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

void imprimir(size_t num_elem, ...);

int main(void)
{
imprimir(1, 0);
imprimir(2, 0, 1);
imprimir(3, 0, 1, 2);
imprimir(4, 0, 1, 2, 3);

return EXIT_SUCCESS;
}

void imprimir(size_t num_elem, ...)
{
va_list lista;
size_t i;
int elem;

va_start(lista, num_elem);

for (i = 0; i < num_elem; i++){
elem = va_arg(lista, int);
printf("%3d", elem);
}
puts("");

va_end(lista);
}

Este ejemplo muestra como pasar parametros de longitud variable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar