Ne postoji na niskom nivou clanovi unije, jer unija je jedna jedina memorijska lokacija, ma koliko varijabli bilo u njoj. To sta ja pisem "aktivan", "inicjalizacija", to je radi lakseg objasnjavanja stvari.
Code:
int n=3;
int *p1, *p2;
double *q1, *q2;
p1=(int *) malloc(n*sizeof(int));
p2=&(p1[n-1]);
*p1=5;
p1[n-1]=3;
q2=(double *) malloc(n*sizeof(double));
q1=&(q2[0]);
q1=5.5;
q1[n-1]=*q2;
1. n = 3.
2. deklariramo dva pointera tipa int.
3. deklariramo dva pointera tipa double.
4. alociramo memoriju dovoljnu za postavljanje tri integera (n*sizeof(int)), i adresu alocirane memorije saljemo u p1.
5. p2 postavljamo na pocetnu adresu p1 + 64 bajta. p1[n-1] == p1[2], a p1[2] je lokacija 64 bajta otklona od p1, (2 * sizeof(int)).
6. ono na sta p1 pokazuje, mozemo promatrat kao dinamicki alocirano polje od tri ineger elementa. sad smo prvi clan polja postavili na broj 5.
7. isto tako, zadnji clan polja smo postavili na 3. sad i p2 ispod sebe ima vrijednost 3, jer gledaju na istu memorijsku lokaciju.
8. alociramo memoriju dovoljnu za postavljanje tri doublea, pocetnu adresu bloka saljemo u q2.
9. q1==q2, zato sta je memorijska adresa prvog elementa bloka jednaka adresi koja je prosljedjena u q2 prilikom alociranja.
10. ova linija je cudna. mozda je trik. ali uglavnom, po ovome sta pise gore, pointer q1 ima vrijenost 5.5. a to je nedopusteno, konverzija izmedju double i double*. ako je trebalo bit *q1= 5.5, onda je ista stvar kao kod stavke 6.
11. ako zanemarimo stavku broj 10. q1 pointer gleda upravo gdje i q2. sad, ako posmatramo q2 kao adresu dinamicki alociranog bloka gdje je polje za nasa tri doublea, zadnji element bloka smo postavili na vrijednost prvog elementa bloka.
[Ovu poruku je menjao z@re dana 07.04.2006. u 19:01 GMT+1]
[12:33am] <alek> deca od 3-5 godina prvi spoznaju ljubav bozju :)
Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.
A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.