File: Stare vježbe/vjezbe11/70__slozene_strukture.c

  1. /*
  2.   70__slozene_strukture.c
  3.   -----
  4.   Clan strukture moze biti i neka druga struktura ili pointer na nju.
  5. */
  6.  
  7. #include <stdio.h>
  8.  
  9. typedef struct {
  10. int x, y;
  11. } tocka;
  12.  
  13. typedef struct {
  14. tocka gore_lijevo, dolje_desno;
  15. } pravokutnik;
  16.  
  17. struct ABC {
  18. char a, b, c;
  19. int x, y, z;
  20. };
  21.  
  22. struct XYZ {
  23. struct ABC a1;
  24. int z1;
  25. struct ABC *p1;
  26. };
  27.  
  28. int main()
  29. {
  30. static struct ABC ttt;
  31. static struct ABC sss;
  32.  
  33. /* inicijalizacija polja struktura XYZ */
  34. static struct XYZ q[] = {
  35. {
  36. { 'h', 'i', 'j', 0, 1, 2 },
  37. 1000,
  38. &ttt
  39. },
  40. {
  41. { 'b', 'y', 'e', 10, 11, 12 },
  42. 9000,
  43. &sss
  44. }
  45. };
  46.  
  47. pravokutnik prav={{0, 0}, {0, 0}}, *p_prav=&prav;
  48.  
  49. prav.gore_lijevo.x=-100;
  50. p_prav->dolje_desno.y=200;
  51. printf ("Pravokutnik: gore_lijevo=(%d, %d), dolje_desno=(%d, %d)\n",
  52. prav.gore_lijevo.x, prav.gore_lijevo.y,
  53. prav.dolje_desno.x, prav.dolje_desno.y);
  54.  
  55. /* krivo je napisati q.p1->a = 100; jer je q zapravo pokazivac! */
  56. q[0].p1->a = 100;
  57. printf ("q[0].p1->a=%d\n", q[0].p1->a);
  58.  
  59. (*q).p1->a = 50; /* moze i q->p1->a=50; */
  60. printf ("q[0].p1->a=%d\n", q[0].p1->a);
  61. return 0;
  62. }
  63.