Professional Documents
Culture Documents
Strukture
Strukture
Strukture
Definicija naredbom struct + ime + opis
komponente
struct tacka
{int x, y;} a, b, c;
struct pravougaonik
{struct tacka dole_levo, gore_desno;};
struct krug
{double r; struct tacka centar;};
Strukture
Strukture
Strukture
Strukture
u obliku izraza
koji predstavlja poziv funkcije
koja je tipa te strukture
ako se sa typedef
definie strukturni tip,
njegov identifikator se moe
koristiti kao oznaka tipa
i bez slubene rei struct
Strukture
Upotreba struktura
typedef struct {
char dan, mesec; short int godina;
} datum;
typedef struct {
char maticni_broj[13];
ime osoba;
datum datum_rodjenja;
char adresa[30];
} gradjanin;
Upotreba struktura
Upotreba struktura
Primer:
Upotreba struktura
Upotreba struktura
Upotreba struktura
Upotreba struktura
a.x=13; a.z=-22;
a={13,-22} (samo inicijalizacija !!!)
x.dole_levo.x=4; x.dole_levo.y=-5;
x.gore_desno.x=7; x.gore_desno.y=0;
w.dole_levo=a; w.gore_desno=p;
Upotreba struktura
Upotreba struktura
/* definisanje tipa Tacka */
#include <math.h>
Upotreba struktura
Linearna lista
nedostaci:
dodatni prostor za pokazivae
samo sekvencijalan ali ne i direktan
pristup
Element *niz;
sled - pokaziva na naredni lan liste
niz pokaziva na poetak liste
6
struct Cvor {
int broj;
struct Cvor *levi, *desni;
} *stablo;
Unije
Unije
naredba union
(sintaksa kao za struct)
strukturirani tipovi
koji omoguavaju da se u
isti memorijski prostor
smetaju podaci razliitih tipova u
razliitim vremenskim intervalima
struct {
int i;
double d;
char *c;
} s;
7
union {
int i;
double d;
char *c;
} u;
Unije
s: s.i
s.d
s.c
Unije
za razliku od strukture,
u jednom momentu
samo jedna komponenta
ima definisanu vrednost
u: u.i
u.d
u.c
sizeof s
sizeof u
Polja bitova
Unije
struktura
ije su komponente
duine nekoliko bitova
(pakuju se na mainski zavisan nain)
Polja bitova
Polja bitova
deklaracija
Standard ne definie:
da li polje bitova moe da bude due od
mainske rei
Polja bitova
struct {
unsigned int n:1, z:1, prio:4;
} status_reg;
lst:
status_reg.prio=5;
if (status_reg.n != 1 &&
status_reg.z != 0) ...
9
NULL
Izostavljanje elemenata sa
datom vrednou (1)
Izostavljanje elemenata sa
datom vrednou (2)
prvi:
NULL
NULL
:posl
Prazna lista i
obilazak liste
12
Dodavanje na poetak
Dodavanje na kraj