[ absBeg @ 22.08.2006. 17:57 ] @
Ok, znam da ako zelim pristupiti vrijednosti van neke funcije, onda koristim ili referencu ili pointere. Medjutim, kad koristim referencu, onda obe varijable koriste isti memorijski prostor, dok kod pointera se koriste dva memorijska prostora (pointera i varijable u mainu). Da li vi iskusniji programeri koji morate voditi racuna o ustedi memorije u ovakvim situacijama koristite pointere ili reference?
Na primjer, void saberi(int &a) ili void saberi(int* a)

S druge strane, da li C++ programer u danasnje vrijeme mora voditi brigu o ustedi memorije kad pravi neki program ili je to stvar proslosti?
[ android~paranoid @ 22.08.2006. 22:36 ] @
Citat:
absBeg: Ok, znam da ako zelim pristupiti vrijednosti van neke funcije, onda koristim ili referencu ili pointere. Medjutim, kad koristim referencu, onda obe varijable koriste isti memorijski prostor, dok kod pointera se koriste dva memorijska prostora (pointera i varijable u mainu). Da li vi iskusniji programeri koji morate voditi racuna o ustedi memorije u ovakvim situacijama koristite pointere ili reference?
Na primjer, void saberi(int &a) ili void saberi(int* a)

S druge strane, da li C++ programer u danasnje vrijeme mora voditi brigu o ustedi memorije kad pravi neki program ili je to stvar proslosti?


Reference su uvedene u C++, a sluze za lakse pisanje bas tih f-ja,
znaci sad bi ako stavis kao referencu, u definiciji f-je samo pisao a,
dok bi u slucaju pointera uvek pisao *a.
Mnogo je lakse, a danas mislim da je ta usteda u memorijskom prostoru smesna.
[ NrmMyth @ 22.08.2006. 22:42 ] @
proslosti?
Citat:
absBeg: S druge strane, da li C++ programer u danasnje vrijeme mora voditi brigu o ustedi memorije kad pravi neki program ili je to stvar proslosti?
Ovisi o situaciji.

Citat:
Na primjer, void saberi(int &a) ili void saberi(int* a)

Referenca se interno i reprezentira kao pokazivac, ali u okvirima jezika se smatra drugim nazivom za neku varijablu.
[ android~paranoid @ 22.08.2006. 22:50 ] @
Koliko b zauzima pokazivac?
[ NrmMyth @ 23.08.2006. 00:23 ] @
Koliko i nativni tip OS-a.
Kod Win32 je 4 bajta, 32 bita, dok bi kod Win64 trebalo biti duplo, 8 bajtova.

Inace postoji sizeof operator...
[ absBeg @ 23.08.2006. 22:31 ] @
Zar i pointer kao i druga varijabla ne zauzima onoliko prostora s obzirom na
koji tip podatka upucuje? npr.
int* pointer - 4b
char* pointer - 1b
...
itd.
[ android~paranoid @ 24.08.2006. 15:58 ] @
Pokazivac samo sadrzi adresu memorijske lokacije,
pogledao sam kod Krausa i kaze da je obicno 2 ili 4 bajta.
[ toxi_programer @ 24.08.2006. 20:11 ] @
Hm... da recem ja kako to izgleda.
Dakle prvo mora da uocis da u
void f_ja( int &broj) {}
operator & nije isto sto i u slucasaju ovome
int broj1, broj2;
broj1 = &broj2
Da netupim u detalje u prvom slucaju & je referenca a u drugom je "adresa-od". Bitna stvar je ta se kada koristis referencu vrednost NE KOPIRA sto znaci povecanje brzine jer se izostavlja kopiranje elemenata( to kopiranje je inace jedina losa osobina f-ja... zbog "steka" ovo-ono)...Ovo igra bitnu ulogu kada su parametri clase kod je ova osobina zanemarljiva kada se primenjuje na "ugradjene" tipove podataka(jer su isti memoristi mali pa se brzo kopiraju). Ovde je memorija sporedna stvar a zlatno pravilo glasi : KORISTI &(ampersend) KAD KOD MOZES, *(pointer) SAMO KADA MORAS.
[ DjoleReject @ 30.08.2006. 01:03 ] @
Citat:
absBeg: Zar i pointer kao i druga varijabla ne zauzima onoliko prostora s obzirom na
koji tip podatka upucuje? npr.
int* pointer - 4b
char* pointer - 1b
...
itd.


Velicina pointera ne zavisi od tipa na koji pokazuje (kao sto ni velicina znaka pored puta ne ovisi o velicini grada na koji pokazuje). Nije ti potreban veci znak za Beograd nego za Paracin. Pointer moze pokazivati na ogroman niz podataka, pa ostaje mali, jer u njemu samo pise npr. 1432648649373. A taj broj kaze odakle treba poceti citanje i nista vise.
[ n1tr0 @ 20.10.2006. 15:44 ] @
Citat:
int broj1, broj2;
broj1 = &broj2

Da nisi mozda mislio na:
Code:
int *broj1,broj2;
broj1=&broj2;

Ako bi napisao kao ti compiler bi prijavio error, jer ne mozes obicnom int-u da dodelis adresu!
[ radoica @ 20.10.2006. 18:03 ] @
Mozda je mislio na ovo:

[shala]
Code:

int broj1, broj2;
broj1 = reinterpret_cast<int>(&broj2);
[/shala]
[ toxi_programer @ 20.10.2006. 18:47 ] @
heh vec ste me isprozivali :)
Da, izostavih *
Ccc...