#include //definicija strukture struct Tacka { int x; int y; }; //jedna struktura moze biti clan druge strukture // definicija strukture struct krug { struct Tacka C;//centar kruga int r; // poluprecnik kruga }; // preimenovanje strukture typedef struct krug Krug; // typedef stari_tip Novo_ime /* skracena definicija strukture i preimenovanje typedef struct krug { struct Tacka C; int r; } Krug; */ int main() { // odvojene deklaracija promenljive i inicijalizacija struct Tacka M; M.x=5; M.y=10; //deklaracija sa inicijalizacijom struct Tacka N={1,2}; printf("M(%d,%d)\n",M.x,M.y); printf("N(%d,%d)\n",N.x,N.y); //Imena clanova strukture uvek vezana za ime promenljive tipa struktura // nema konflikta ako postoji druga promenljiva sa imenom clana strukture int x=25; printf("M.x=%d, a samo x=%d\n",M.x,x); //dozvoljen operator dodele medju strukturama istog tipa struct Tacka P; P=M; printf("Sada P ima iste vrednosti kao M\nM(%d,%d)\tP(%d,%d)\n",M.x,M.y,P.x,P.y); //definicija pokazivaca na strukturu struct Tacka* pT; pT=&N; printf("pT pokazuje na tacku N\n*pT(%d,%d)\tN(%d,%d)\n",(*pT).x,pT->y,N.x,N.y); // pT->x je skraceni zapis za (*pT).x // zbog typedef kljucna rec struct se moze izostaviti kod deklaracije kruga Krug K={{0,0},5}; // deklaracija sa inicijalizacijom //pristup x koordinati centra kruga K.C.x=1; printf("Krug K ima centar (%d,%d) i poluprecnik %d\n",K.C.x,K.C.y,K.r); return 0; }