Programación General > C/C++
Como declaro miembros de una struct en una funcion
o.ficu:
Hola espero puedan ayudarme, siempre tengo problemas con esto, el problema es que no se como declarar un miembro de struct en una funcion, por ejemplo si me struct es: struct Datos{
char nombre[];
char apellidos[];
struct direccion{
char avenida[];
char ciudad;
struct telefonos{
char casa[];
char movi[];};
};
};
si deseo por ejemplo una funcion con argumentos de Datos seria: void(Datos p[]) pero si deseo declarar por ejemplo una funcion con argumento del numero de telefono de la casa, como lo hago??? void(Datos.telefonos.casa)??? no se como declarar cuando una estructura esta dentro de otra, espero puedan ayudarme, gracias.
Oliver
m0skit0:
Antes de todo, no te aconsejaría que declararas tales estructuras de datos como lo has hecho:
--- Código: C ---struct Datos{ char nombre[]; char apellidos[]; struct direccion { char avenida[]; char ciudad; struct telefonos { char casa[]; char movi[]; }; };}; Esto es difícil de leer, de manipular, de entender y poco flexible :wacko: Hazlo así mejor, queda más legible y más estructurado:
--- Código: C ---typedef struct{ char casa[]; char movil[];} tTelefonos; typedef struct{ char avenida[]; char ciudad; tTelefonos telefonos;} tDireccion; typedef struct{ char nombre[]; char apellidos[]; tDireccion direccion; } tDatos;
Ahora ya no tienes problemas para pasar cualquier tipo a una función:
--- Código: C ---char* funcion1(tTelefonos telefonos);int funcion2(tDireccion direccion, tTelefonos telefonos, tDatos datos);
o.ficu:
Gracias por tu respuesta y tus consejos!!! pero aun me queda una duda, si me piden que yo en mi funcion tenga como argumento el NUMERO DE CASA entonces solo es posible declarar funcion(tTelefonos telefono) ???? no se puede declarar con el numero de casa??? y si encaso si se puede seria funcion(tTelefonos telefono.casa)???? o como???? esa en si es mi pregunta!!!
1.typedef struct
2.{
3. char casa[];
4. char movil[];
5.} tTelefonos;
6.
7.typedef struct
8.{
9. char avenida[];
10. char ciudad;
11. tTelefonos telefonos;
12.} tDireccion;
13.
14.typedef struct
15.{
16. char nombre[];
17. char apellidos[];
18. tDireccion direccion;
19.} tDatos;
Dynyck:
Si quieres pasar a una función ese argumento, puedes pasar la estructura como referencia si no quieres ocupar "más memoria". Si así lo haces, luego en la definición de la función, accede al campo mediante el operador ".".
m0skit0:
--- Código: C ---// Prototipo:funcion1(char* numero_de_casa); // Llamada:funcion1(direccion.telefonos.casa);
Navegación
[#] Página Siguiente
Ir a la versión completa