Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".
1 /*
2 * Soubor: 20111201-Thu-struktury.c
3 * Datum: 01.12.2011 08:27
4 * Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 * Licence: GNU/GPL
6 * Úloha: jak se pracuje se struct
7 ****************************************************/
8 #define _ISOC99_SOURCE
9 #define _GNU_SOURCE
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 /* *************** Makra ******************** */
14 #define ARREYC 1024
15
16 /* *************** Funkce ******************** */
17
18
19 /****************************************************
20 * Hlavní program.
21 ****************************************************/
22 int main(void) {
23
24 int cislo, dalsi_sislo;
25
26 struct {
27 int vyska;
28 int vaha;
29 } pavel, lukas, jan;
30 /////////////////////////////////////////////////////
31 struct miry {
32 int vyska;
33 int vaha;
34 } jerony, tomas;
35
36 struct miry ondra;
37 /////////////////////////////////////////////////////
38 struct miryy {
39 int vyska;
40 int vaha;
41 } ;
42
43 struct miryy radim, mates;
44 /////////////////////////////////////////////////////
45 // operátor typedef definje nové datové typy
46
47 typedef int CELECISLO;
48 CELECISLO i=20;
49 /////////////////////////////////////////////////////
50 //
51 typedef struct {
52 int den;
53 int mesic;
54 int rok;
55 } DATNAR;
56
57 typedef struct {
58 int vyska;
59 int vaha;
60 DATNAR datum;
61 } MIRY; // velka pismena odlišují jména proměnných a jmnéna datových tipů
62
63 MIRY petr, jirka ;
64
65 petr.vyska = 159;
66 jirka.datum.den = 5;
67 jirka.datum.mesic = 12;
68 jirka.datum.rok = 1992;
69 /////////////////////////////////////////
70 MIRY *fred;
71
72 //*(fred.vyska)=181; // fred.vyska je ukazatel => chyba
73 fred = &jirka;
74 (*fred).vyska=181; // fred je ukazatel a uvnitř je vyska
75 fred->vyska=181; // ekvivalentí zápis k předchozímu řádku
76 printf("%d\n",jirka.vyska);
77
78 // anonynmí paměť
79 fred = malloc(sizeof(MIRY));
80 fred->vyska = 193;
81 fred->datum.rok = 1999;
82
83 printf("%d\n",fred->vyska);
84 printf("%d\n",(*fred).datum.rok);
85
86 /////////////////////////////////////////
87 // příklad evidence žáků
88
89 typedef struct {
90 int prumer;
91 int vek;
92 char jmeno[20];
93 DATNAR datum;
94 } ZAK;
95
96 ZAK trida[33];
97
98 trida[0].vek=12;
99 trida[1].vek=14;
100 trida[2].vek=11;
101 trida[0].datum.den=28;
102
103 int pole[33];
104 pole[0]=20
105
106
107 ////////////////////////////////////
108 puts("konec");
109 return 0;
110 }