Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pokazivaci(eng. pointeri)

[es] :: C/C++ programiranje :: Pokazivaci(eng. pointeri)

Strane: 1 2

[ Pregleda: 12744 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Pokazivaci(eng. pointeri)14.03.2006. u 21:28 - pre 219 meseci
Moze li mi neko detaljno objasniti sto su pokazivaci i prikazati njihovu prakticnu primjenu.
Shvacam da pokazivaci zapravo pokazuju na neku adresu u memoriji,ali mi nije jasno kada se primjenjuju i cemu zapravo sluze.
Molim bez odgovora tipa google i bilo je vec na forumu.
Hvala
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Pokazivaci(eng. pointeri)14.03.2006. u 22:08 - pre 219 meseci
pokazuju na pocetak nekog bloka u memoriji
:)
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: Pokazivaci(eng. pointeri)14.03.2006. u 22:17 - pre 219 meseci
Prakticna uporaba? ;)
 
Odgovor na temu

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
193.198.27.*



Profil

icon Re: Pokazivaci(eng. pointeri)15.03.2006. u 15:48 - pre 219 meseci
Može li netko dati neki primjer koda ali kod gui, a ne konzolnih aplikacija?
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 10:04 - pre 219 meseci
Primjer kako preko pokazivaca mjenjas vrijednost argumentima:

void test (int* x, int* y)
{
*x=5;
*y=22;
}

int var1 = 4;
int var2 = 17;

printf("vrednost prije var1=%d, var2=%d\n', var1, var2);
test (&var1,&var2);
printf("vrednost posle var1=%d, var2=%d\n', var1, var2);



[Ovu poruku je menjao ljube dana 16.03.2006. u 11:05 GMT+1]
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 10:13 - pre 219 meseci
Zasto da napisem preko pokazivaca kad mogu i ovako:
x=5;
y=25;

Koja je razlika??
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
80.93.240.*



+2 Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 10:32 - pre 219 meseci
Ako ne pišeš preko pokazivača, menja se samo vrednost (kopija) vrednosti x i y. Vrednosti var1 i var 2 ostaju nepromenjene.
Da bi promenio vrednosti var1 i var2 potrebno je da koristiš pokazivače.
Najprostiji primer ti je SWAP f-ja. F-ja koja zameni 2 broja.

Code:

void swap (int *px, int *py){
int temp;
temp = *px;
*px = *py;
*py = temp;
}


Ako ne bi radio s pointerima

Code:

void swap (int px, int py){
int temp;
temp = px;
px = py;
py = temp;
}


Promenio bi samo vrednosti px i py unutar samo f-je, a vrednosti x i y, odnosno var1 i var2 bi ostale nepromenjene.
Zato korisitiš pointer koji pokazuje na vrednosti var1 i var2 i samo preko njih možeš da promeniš njihove vrednosti unutar funkcije.

Mnoogo su opširni pointeri da bi ti to neko objašnjavao na forumu. Imaš pointer na neku vr. Pa pointer na pointer, pa pointer na funkciju, pa pointer kao argument f-je što je isto kao i "običan" pointer pa...

[Ovu poruku je menjao Pharos dana 16.03.2006. u 11:38 GMT+1]
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

k4rl0
Localhost

Član broj: 87683
Poruke: 142
*.adsl.net.t-com.hr.



Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 11:10 - pre 219 meseci
Posto su pokazivaci najveca prednost i mogucnost C++a imam velku volju ih naucit,pa..
Idem se primit knjige,nadam se da cu shvatit
Hvala na odgovorima,
Pozdrav
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 13:27 - pre 219 meseci
Guglanjem za terminom "pokazivaci" dodje se do sledecih interesantnih linkova:
http://www.matf.bg.ac.yu/~gordana/op/BGLAVA10.pdf
http://student.foi.hr/~darados/pokazivaci/
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pokazivaci(eng. pointeri)16.03.2006. u 14:23 - pre 219 meseci
Citat:

Ako ne pišeš preko pokazivača, menja se samo vrednost (kopija) vrednosti x i y.
Vrednosti var1 i var 2 ostaju nepromenjene. Da bi promenio vrednosti var1 i var2
potrebno je da koristiš pokazivače.


Postoji jos jedan *vazan* vid upotrebe pokazivaca kada se koriste za prenos
argumenata funkciji, a ne odnosi se na menjanje ili nemenjanje tih proslednjenih
podataka.

Brzina.

Kada se argumenti prenose preko pokazivaca - nema internog kopiranja tih
vrenosti u funkciji - pa je i kod brzi, pogotovo ako se radi o nekoj funkciji
koja se koristi u nekoj petlji.

Dakle, kada vidis nesto kao (const + pointer):

Code:

void funkcija ( const int *x, const int *y )
{
   // ...
}


To obicno znaci, "pointere koristim radi brzine a const da naznacim da x i y
nisu za menjanje."

Inace, pointeri pocetnicima nisu jasni jer su primeri u skoro svim knjigama koje
sam imao - totalno atipicni u realnom programiranju, pa stoga i ne ostavljaju
puno prostora da se dodje do nekog logicnog zakljucka.

 
Odgovor na temu

system0verride
Nishville

Član broj: 8363
Poruke: 44
*.dial.b92.net.

Sajt: www.biosforge.com


Profil

icon Re: Pokazivaci(eng. pointeri)17.03.2006. u 00:54 - pre 219 meseci
Hehe ne zaboravi osnovne strukture kao sto su lancane liste bez kojih ne moze :D,stabla,dvostruko povezane lan. liste....
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Pokazivaci(eng. pointeri)17.03.2006. u 03:54 - pre 219 meseci
Te strukture se mogu napraviti i bez pokazivaca...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.3dnet.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pokazivaci(eng. pointeri)17.03.2006. u 09:40 - pre 219 meseci
Lancane liste odavno podrzava STL standard, tako da je sve dovedeno na upotrebni nivo.

 
Odgovor na temu

PeRuN_RoJs
kosjeric

Član broj: 67848
Poruke: 46
*.ADSL.neobee.net.



Profil

icon Re: Pokazivaci(eng. pointeri)15.04.2006. u 11:17 - pre 218 meseci
Pa osnovna prednost lancanih lista je sto mogu biti "pretumbane" u memoriji...Ako se rade bez pokazivaca sve nekako gubi smisao...Zbog cega onda ne napraviti najobicniji niz bez obzira bila to lista, ili sablo, ili sta god...?Zaboravljate prednost pokazivaca da funkciji prosledi "pravi" parametar, tj. da funkcija radi direktno sa njim...Tako maltene svaka funkcija moze biti void, a vrednost odredjenog parametra (ukoliko se koriste pokazivaci, naravno) ce ipak biti promenjena......

[Ovu poruku je menjao PeRuN_RoJs dana 15.04.2006. u 12:18 GMT+1]
Don't look at me, I'm lost too.....
 
Odgovor na temu

PeRuN_RoJs
kosjeric

Član broj: 67848
Poruke: 46
*.ADSL.neobee.net.



Profil

icon Re: Pokazivaci(eng. pointeri)15.04.2006. u 11:21 - pre 218 meseci
Recimo :

Code:

void AddTwo (int *pointer)
{
*pointer+=2;
}

void main ()
{
int x=4;
AddTwo (&x);
printf ("%i",x);
}


Dakle ispisuje 6!Zar ne?

=]

[Ovu poruku je menjao PeRuN_RoJs dana 15.04.2006. u 12:24 GMT+1]
Don't look at me, I'm lost too.....
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Pokazivaci(eng. pointeri)17.04.2006. u 16:27 - pre 218 meseci
Mala digresija - "pointeri" nije engleska rec, vec srpska/hrvatska/srpskohrvatska (kako ko voli). Egleska rec bi bila "pointers".
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

PeRuN_RoJs
kosjeric

Član broj: 67848
Poruke: 46
*.ADSL.neobee.net.



Profil

icon Re: Pokazivaci(eng. pointeri)17.04.2006. u 16:37 - pre 218 meseci
Ako cemo bas da "cepidlacimo", nije ni srpska vec uvedenica iz engleskog...


Don't look at me, I'm lost too.....
 
Odgovor na temu

@zrael


Član broj: 80614
Poruke: 21
*.adsl.net.t-com.hr.



Profil

icon Re: Pokazivaci(eng. pointeri)18.04.2006. u 21:51 - pre 218 meseci
pokusat cu malo razjasniti stvar. Oni su jedna mala zajebana stvar. i najcesce se na njima grijesi. Ako ih se nauci koristiti, nevjerojatno su mocna stvar. Po meni ih je najbolje koristiti za nabrijavanje algoritma pošto s njim imate direktni pristup radnoj memoriji. U kombinaciji sa struct-ovima su zaista nevjerojato močna stvar. Sa Structovima i pointerima pravis direktne vezane liste ili bilo koje strukture podataka. Kako ces ti to sve primjenjivat, ovisi o samom zadatku koji imas za ispunit. U vecini slucajeva ti se obrada podataka svodi na rad s poljima. Problem u poljima je taj sto tocno morac odrediti kolicinu polja koju ces koristiti kao maximalni broj. S strukturama podataka, koje stvarujes pomocu pointera, nisi limitiran memorijom koju si alocirao preko polja nego mozes ici u beskonacnost (velicina memorije). Sa pointerima tako sa vezanom listom mozes mnogo brze sortirati elemente u mnogo manje koraka nego sto bi to mogao sa poljima.
npr: Enigma- simulator kriptografskog stroja iz 2. sv rata
Ona ima 3 rotora koji svaki ima po dvije abecede od 26 elemenata te slican reflektor te slicane utikace. radi se o tome da to rijesavas poljima, ti svaku promjenu vrijednosti moras praviti neko prepisivanje iz varijable u varijablu. Svako to prepisivanje ima niz koraka koje komp mora odraditi. Pointerom ti samo preusmjeravas vrijednosti. Radit ce ti brze zato sto je preusmjeravanje pointera manje zahtjevno za komp nego kopiranje iz varijable u varijablu
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Pokazivaci(eng. pointeri)18.04.2006. u 22:20 - pre 218 meseci
Citat:
@zrael: Problem u poljima je taj sto tocno morac odrediti kolicinu polja koju ces koristiti kao maximalni broj. S strukturama podataka, koje stvarujes pomocu pointera, nisi limitiran memorijom koju si alocirao preko polja nego mozes ici u beskonacnost (velicina memorije).


Jesi ti cuo za dinamicko alociranje i dinamicko realociranje?

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.
 
Odgovor na temu

reject
Ivan Pesic
Bgd

Član broj: 7659
Poruke: 2209
*.83.beocity.net.

Sajt: misc.comli.com


Profil

icon Re: Pokazivaci(eng. pointeri)19.04.2006. u 09:56 - pre 218 meseci
A sta ti hoces da kazes sa tim tvojim "jesi cuo ti za..." pitanjem?
Citat:
@zrael:S strukturama podataka, koje stvarujes pomocu pointera, nisi limitiran memorijom koju si alocirao preko polja nego mozes ici u beskonacnost (velicina memorije).

Ocigledno da je cuo, jer iz ovog gore sledi da zna da alocira jos memorije kad mu treba.

Mislim, nije to najsrecnije napisan post na svetu, daleko od toga, ali cemu takvo pitanje kad nisi ni procitao sve?
Mass murder ain’t just painless,
Now we’ve made it cute.


The Church Of The Holy Transistor
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pokazivaci(eng. pointeri)

Strane: 1 2

[ Pregleda: 12744 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.