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

Pomoc oko pokazivaca!!!

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

[ Pregleda: 1432 | Odgovora: 11 ]

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

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[]
09.02.2005. u 21:28 

CimBac
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
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.
09.02.2005. u 22:28 

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
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
10.02.2005. u 02:41 

varginjo
Atila Varga
Čoka

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



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 06:21

A jer ima neki tutorial za pokazivace, na srpskom ?
10.02.2005. u 06:21 

define

Član broj: 41934
Poruke: 288
213.244.208.*



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:17
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?
10.02.2005. u 12:17 

Ivand
Ivan Dimitrijević
yu/pa

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

Jabber: artur_dent@elitesecurity.org
Sajt: www.fotomanijak.com


Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:45
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.

http://fotomanijak.com kad porastem bicu dpreview ;)
10.02.2005. u 12:45 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

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

Sajt: www.sipovo.org


Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 12:47
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.

SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
10.02.2005. u 12:47 

Marko Stankovic

Član broj: 11
Poruke: 306
212.200.23.*

Jabber: urobor@elitesecurity.org
ICQ: 42897384


Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 14:52
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.
10.02.2005. u 14:52 

aleksandaraleksandar
aleksandar
[earth].[europe]

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

Sajt: aleksandaraleksandar.blog..


Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 17:32
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?
Garnišne - za vaš dom
Opera 9: srpski prevod

---
Najveća B2B mreža: http://www.xing.com/go/invite/7087568.4f7e28 (<-- sa
pozivnicom dobijate besplatno članstvo)
10.02.2005. u 17:32 

Shatterhand

Član broj: 42109
Poruke: 478
212.62.59.*



Profil

icon Re: Pomoc oko pokazivaca!!!10.02.2005. u 22:14
Losha metafora ali mislim da 10 ruku treba da shvatis kao pointere ;)
10.02.2005. u 22:14 

Ivand
Ivan Dimitrijević
yu/pa

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

Jabber: artur_dent@elitesecurity.org
Sajt: www.fotomanijak.com


Profil

icon Re: Pomoc oko pokazivaca!!!11.02.2005. u 00:30
@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
http://fotomanijak.com kad porastem bicu dpreview ;)
11.02.2005. u 00:30 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 273
213.244.197.*



Profil

icon Re: Pomoc oko pokazivaca!!!17.02.2005. u 20:41
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.
17.02.2005. u 20:41 

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

[ Pregleda: 1432 | Odgovora: 11 ]

Postavi temu Odgovori

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