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

Pomoc oko pokazivaca!!!

[es] :: C/C++ programiranje :: Pomoc oko pokazivaca!!!

[ Pregleda: 3937 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

define

Član broj: 41934
Poruke: 288
213.244.208.*



Profil

icon Pomoc oko pokazivaca!!!09.02.2005. u 21:28 - pre 236 meseci
Ljudi nikako ne mogu da shvatim kako treba upotrebu pokazivaca. Radim ja nekako neke sitnice, ali ne razumem koja je poenta. Znam da pokazivac moze da ukazuje na neku drugu promenljivu ili njenu adresu. Ali ne razumem za sta on konkretno koristi, evo jednog primera funkcije.

Code:
Napisati funkciju koja će sve elemente zadatog celobrojnog polja p od N elemenata pomeriti za određeni broj mesta pomak (pomak < N). Ukoliko je pomak pozitivan, elementi polja pomiču se udesno, a ukoliko je pomak negativan, elementi polja pomiču se ulevo. Ispražnjeni elementi pune se nulama.

Primer pomaka za pomak = 2 i polje [10 40 50 60 12]:

Polje prije posmaka: [10 40 50 60 12]
Polje nakon posmaka:[ 0  0 10 40 50]

Rešenje: 
void pomakniPolje(int *p, int N, int pomak) {
    int i;
    // ako je pomak udesno
    if (pomak > 0 && pomak < N) {
        for (i = N - 1 - pomak; i >= 0; i --)
            p[i + pomak] = p[i];
        for (i = pomak - 1; i >= 0; i --)
            p[i] = 0;
    }



    // ako je pomak ulevo
    else if (pomak < 0 && -pomak < N) {
        pomak = -pomak;
        for (i = 0; i <= N - 1 - pomak; i++)
            p[i] = p[i + pomak];
        for (i = N - pomak; i < N; i++)
            p[i] = 0;
    }
}

Zbunjuje me ovo void pomakniPolje(int *p, int N, int pomak)
zasto int *p kada se u daljem tekstu koristi polje p[]
 
Odgovor na temu

CimBac
Fax
Novi Sad

Član broj: 37332
Poruke: 157
*.nspoint.net.

Sajt: irrlicht.sourceforge.net


Profil

icon Re: Pomoc oko pokazivaca!!!09.02.2005. u 22:28 - pre 236 meseci
Pokazivac u sustini sadrzi adresu neke nase promenljive. Ti u tvom primeru funkciji saljes tu adresu tvog niza od recimo 5 elemenata tipa int, odnosno saljes adresu 1. elementa niza. Da bi mogao da pristupis tim poljima niza pomocu prosledjene adrese, koristi se operator [], koji uz naveden index (broj izmedju tih kockastih zagrada), pristupa odredjenoj vrednosti (odredjena indexom) naseg niza i barata s njom.

Da bi nastavio sa programiranjem potrebno je da dobro shvatis koncept pokazivaca, nizova, i adresne aritmetike koja povezuje ova 2 pojma.
 
Odgovor na temu

aax
alex v p
florida

Član broj: 6067
Poruke: 34
..tfl01.us.wh.nameservers.net.

Jabber: aax@amessage.de


Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 02:41 - pre 236 meseci
za pocetak prodji kroz tutorial na :
http://pw1.netcom.com/~tjensen/ptr/pointers.htm
uvek se nadje da osvezis znanje ili ako si pocetnik da malo bolje savladas problematiku.
good luck,
alex
 
Odgovor na temu

varginjo
Atila Varga
Čoka

Član broj: 25671
Poruke: 258
*.teleportgroup.net.

Sajt: rs.linkedin.com/in/atilav..


+1 Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 06:21 - pre 236 meseci

A jer ima neki tutorial za pokazivace, na srpskom ?
 
Odgovor na temu

define

Član broj: 41934
Poruke: 288
213.244.208.*



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:17 - pre 236 meseci
ma radim ja sa nizovima, dosta dobro (bar ovo sto mi trenutno ucimo u C-u), nego me buni zasto negde kao npr ovde koristimo pokazivac umesto niza?
 
Odgovor na temu

Ivand
Ivan Dimitrijević
...
yu/pa

Član broj: 17
Poruke: 2161
*.tehnicom.net.

Sajt: www.ivandima.com


+4 Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:45 - pre 236 meseci
Kada prosledis niz kao argument funkciji , ceo niz se kopira i ti u samoj funkciji radis sa kopijom tako da bilo koje izmene ili bilo sta drugo se nece videti u glavnom programu, a funkcije nemogu da vrate niz kao argumet.

Kada funkciji prosledis pointer na niz , u f-ciji radis sa originalom niza a ne sa njegovom kopijom tako da se sve izmene odrazuju u glavnom programu.

To je samo koriscenje pointer u ovom slucaju , a mogucnosti primene su .... neogranicene.

 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:47 - pre 236 meseci
Citat:
define: ma radim ja sa nizovima, dosta dobro (bar ovo sto mi trenutno ucimo u C-u), nego me buni zasto negde kao npr ovde koristimo pokazivac umesto niza?

Ako znas da radis sa nizovima ,onda bi trebao da znas raditi sa pokazivacima.
Jedno bez drugog ne moze.
Lijepo uzmi dobru knjigu i uci.

 
Odgovor na temu

Marko Stankovic

Član broj: 11
Poruke: 306
212.200.23.*



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 14:52 - pre 236 meseci
Citat:
Ivand: Kada prosledis niz kao argument funkciji , ceo niz se kopira i ti u samoj funkciji radis sa kopijom tako da bilo koje izmene ili bilo sta drugo se nece videti u glavnom programu, a funkcije nemogu da vrate niz kao argumet.
Kada funkciji prosledis pointer na niz , u f-ciji radis sa originalom niza a ne sa njegovom kopijom tako da se sve izmene odrazuju u glavnom programu.


Lose si ovo razumeo. Ovako nesto moze da radi u pascalu, u c-u niz ne moze da se prenese po vrednosti. Jer samo ime niza je nepromenljivi pokazivac. Znaci u C-u jedino pokazivac prenosis po vrednosti i sa niz[j] uvek pristupas originalnim vrednostima niza, jedino ce pokazivac niz u funkciji da bude kopija originalnog pokazivaca.


Citat:
define: ma radim ja sa nizovima, dosta dobro (bar ovo sto mi trenutno ucimo u C-u), nego me buni zasto negde kao npr ovde koristimo pokazivac umesto niza?


Zato sto je samo ime niza pokazivac na prvi element u nizu, znaci niz==pokazivac. Kao sto rekose ljudi procitaj jos malo knjigu i razjasnice ti se ovo, jer ovo su bas elementarne stvari iz c-a.
I drink to make other people interesting.
 
Odgovor na temu

aleksandaraleksandar
aleksandar
[earth].[europe]

Član broj: 13175
Poruke: 2895
*.com
Via: [es] mailing liste

Sajt: aleksandaraleksandar.blog..


+6 Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 17:32 - pre 236 meseci
bez zelje da vam pojednostavljujem zanat, ali imam jednu sliku u glavu
i nikako da je razresim :)

ako je 10 konja koje vuku kociju, niz; sta su pokazivaci, uzde ili 10
ruku (5 kocijasa), koji upravljaju konjima?
 
Odgovor na temu

Shatterhand

Član broj: 42109
Poruke: 478
212.62.59.*



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 22:14 - pre 236 meseci
Losha metafora ali mislim da 10 ruku treba da shvatis kao pointere ;)
 
Odgovor na temu

Ivand
Ivan Dimitrijević
...
yu/pa

Član broj: 17
Poruke: 2161
*.tehnicom.net.

Sajt: www.ivandima.com


+4 Profil

icon Re: Pomoc oko pokazivaca!!!11.02.2005. u 00:30 - pre 236 meseci
@Marko da u pravu si pogresio sam kada sam rekao nizovi, to je inace tacno za ostale promenljive koje nisu nizovi ,
u c-u koristimo pokazivac da bi menjali vrednost u glavnom programu a ne vrednost kopije prosledjene f-ciji
u c++-u u tu svrhu koristimo upucivace
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
213.244.197.*



+9 Profil

icon Re: Pomoc oko pokazivaca!!!17.02.2005. u 20:41 - pre 236 meseci
Ako ti se svidi, mozes pisati i ovako:

Code:
int *p;
5[p]=1; // predstavlja isto sto i p[5]=1;
// a mozes i ovo.. mada se manje koristi
*(p+5)=1;


pozz.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pomoc oko pokazivaca!!!

[ Pregleda: 3937 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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