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:
void func(char* str[]) {
int i = 0;
while(str[i][0] != '\0')
}
Ante esto uno piensa que para llamar a dicha función debe crear una variable de esta forma
char *lista[] = {"uno", "dos", "tres", "cuatro", "");
y después llamar a la función
func(lista);
Pues se puede llamar a la función pasando un argumento anónimo, la lista entera directamente, de esta forma
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:
#include <stdio.h>
void func(char* str[]) {
int i = 0;
while(str[i][0] != '\0')
}
int main()
{
func((char*[]){"uno", "dos", "tres", "cuatro", ""});
return 0;
}
Ya me diréis que os parece