Ver Mensaje Individual
  #13 (permalink)  
Antiguo 15/05/2014, 09:41
Avatar de Drewermerc
Drewermerc
 
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: problema con arreglo de estruturas

hola amigo.
bueno mira esto es asi.
el operador "->" solo se usa cuando asignas como puntero a una estructuta o la pasas por referencia en funcione entonces hay tambien lo puede usar para poder acceder a los datos.

el ". " solo lo pudes usar para structuras sencillas y manejarlas en ocal osea solo en el main.

bueno aqui te dejo un codigo donde estan las formas en las forms en las que se puede usar este operador y el punto y si analizas con cuidado solo te puse cosas que significan lo mismo soloq ue las puede poner de dirferente manera a esto me refiero con las forma de asignarle nombre a la sestructuras.
bueno con la explicacion de vangodp creo que podras entender todo el codigo.

Código C:
Ver original
  1. #include <stdio.h>
  2. /*ejemplod e estructura con puntero*/
  3. struct ejemplo{
  4.     char *nombre;
  5.     int edad;
  6. };
  7. //estructura simple para  pasar por referencia en una funcion
  8. struct ejemplodos{
  9.     char *nombredos;
  10.     int edaddos;
  11. }datoss;
  12.  
  13. void ejemplouno(struct ejemplo *puntero);
  14. void ejemplodos(struct ejemplodos *datoss);
  15. int main ()
  16. {
  17.     struct ejemplo datos, *puntero;
  18.     puntero = &datos;
  19.     puntero->nombre = "persona uno";
  20.     puntero->edad= 25;
  21.     printf("\n\nnombre: %s\n edad:%d\n", puntero->nombre, puntero->edad);
  22.        
  23.     ejemplouno(puntero);
  24.  
  25.     datoss.nombredos= "persona en local y estructura simple";
  26.     datoss.edaddos= 35;
  27.     printf("\n\nnombre: %s\n edad:%d\n", datoss.nombredos, datoss.edaddos);
  28.     //se pasa los valores de datoss pero se le hace referencia ala direccion de memoria para poder trabar con ellos de la funcion
  29.     ejemplodos(&datoss);
  30.    
  31. }
  32.  
  33. void ejemplouno(struct ejemplo *puntero)
  34. {
  35.     puntero->nombre = "ejemplo";
  36.     puntero->edad= 15;
  37.     printf("\n\nnombre: %s\n edad:%d\n", puntero->nombre, puntero->edad);
  38. }
  39.  
  40. void ejemplodos(struct ejemplodos *datoss)
  41. {
  42.     datoss->nombredos= "persona dos";
  43.     datoss->edaddos= 25;
  44.     printf("\n\nnombre: %s\n edad:%d\n", datoss->nombredos, datoss->edaddos);
  45.     /* pudes probar descomentando esto para que vea que no se puede usar elpunte mas que en local.
  46.     datoss.nombredos= "persona en local y estructura simple";
  47.     datoss.edaddos= 35;
  48.     printf("\n\nnombre: %s\n edad:%d\n", datoss.nombredos, datoss.edaddos);*/
  49. }

bueno espero qe te sirva.
saludos.
drewermerc.