elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Argumentos anónimos en llamadas a funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Argumentos anónimos en llamadas a funciones  (Leído 2,030 veces)
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
[C] Argumentos anónimos en llamadas a funciones
« en: 22 Diciembre 2015, 21:48 pm »

Muy buenas.

Pues sigo con mi cruzada de autodescubrimiento de gramáticas extrañas que C acepta.

Supongamos la siguiente función que acepta un array de cadenas y las va imprimiendo hasta encontrar una cadena vacía:

Código
  1. void func(char* str[]) {
  2.    int i = 0;
  3.    while(str[i][0] != '\0')
  4.        printf("%s\n", str[i++]);
  5. }

Ante esto uno piensa que para llamar a dicha función debe crear una variable de esta forma
Código
  1. char *lista[] = {"uno", "dos", "tres", "cuatro", "");
y después llamar a la función
Código
  1. func(lista);

Pues se puede llamar a la función pasando un argumento anónimo, la lista entera directamente, de esta forma
Código
  1. func((char*[]){"uno", "dos", "tres", "cuatro", ""});

Obviamente, como siempre, esto se puede modificar al gusto y necesidades de cada uno.

Un programa de prueba completo es este:
Código
  1. #include <stdio.h>
  2.  
  3. void func(char* str[]) {
  4.    int i = 0;
  5.    while(str[i][0] != '\0')
  6.    printf("%s\n", a[i++]);
  7. }
  8.  
  9. int main()
  10. {
  11.    func((char*[]){"uno", "dos", "tres", "cuatro", ""});
  12.    return 0;
  13. }

Ya me diréis que os parece  ;)


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [C] Argumentos anónimos en llamadas a funciones
« Respuesta #1 en: 22 Diciembre 2015, 22:08 pm »

Bueno, extraño extraño no es xD
Si:
Código
  1. char* str[] = {"a"};
no es extraño, el otro tampoco: Se está aplicando la misma conversión.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [C] Argumentos anónimos en llamadas a funciones
« Respuesta #2 en: 22 Diciembre 2015, 22:25 pm »

Cierto, es una conversión. Pero decía de que es extraño porque no se suele ver esta forma de llamar a una función directamente con los datos, siempre se suelen preparar antes en una variable.
En línea

fary


Desconectado Desconectado

Mensajes: 1.061



Ver Perfil WWW
Re: [C] Argumentos anónimos en llamadas a funciones
« Respuesta #3 en: 23 Diciembre 2015, 15:12 pm »

No se suele llamar así porque muy rara vez vas a trabajar con datos estáticos  :laugh:

Ademas de que hacer eso no es que sea mas lioso o extraño, es que cuesta hasta mas escribir y leer el código.
En línea

Un byte a la izquierda.
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [C] Argumentos anónimos en llamadas a funciones
« Respuesta #4 en: 23 Diciembre 2015, 17:26 pm »

Mira los códigos del IOCCC son códigos verdaderamente extraños: http://www.ioccc.org/years.html

Un saludo
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Funciones con número arbitrario de argumentos [PHP]
PHP
madpitbull_99 3 4,918 Último mensaje 6 Marzo 2011, 22:31 pm
por JungleBoogie
ver argumentos de funciones codeblocks
Programación C/C++
_niu 2 2,725 Último mensaje 15 Diciembre 2011, 21:57 pm
por _niu
Problema con argumentos por defectos en funciones.
Programación C/C++
anonimo12121 3 2,253 Último mensaje 25 Julio 2012, 14:18 pm
por overxfl0w13
Funciones con nº variable de argumentos - stdarg.h
Programación C/C++
SSantiago90 5 3,260 Último mensaje 6 Mayo 2013, 22:05 pm
por 85
Funciones con argumentos OR: ¿Como?
Programación C/C++
Desiresportal 1 1,431 Último mensaje 1 Junio 2016, 14:34 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines