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

Deklaracija funkcije **

[es] :: C programiranje :: C za početnike :: Deklaracija funkcije **

[ Pregleda: 1203 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brolly

Član broj: 66668
Poruke: 339
*.dialup.neobee.net.



Profil

icon Deklaracija funkcije **17.09.2006. u 15:26

Sta znaci kada se funkcija deklarise sa 2 zvezde, kao ovde:

void racunaj_dohodak(Tradnik **pok);

Posto sadrzi void, znaci da funkcija ne vraca vrednost. Kada bi sadrzala jedno *, to bi znacilo da vraca vrednost po referenci, ali sta znace dve zvezde?
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
17.09.2006. u 15:26 

skijash
Nikola Petrović
Software engineer, Vast.com
BG

Član broj: 8511
Poruke: 301
*.wireless.org.yu.

Jabber: skijash@jabber.org
Sajt: www.vast.com


Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:26
void racunaj_dohodak(Tradnik **pok);
znaci da funkcija ne vraca vrednost, a pok je argument koji je pokazivac na pokazivac na tip Tradnik
...:::|skijash|:::...

............................................................................http://galeb.etf.bg.ac.yu/~skijash
17.09.2006. u 21:26 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:28
Dve zvezdice (**nesto) oznacavaju Pointer na Pointer.

Pogledaj na primer ovde:
http://www.codeproject.com/cpp/PtrToPtr.asp

Najbolje prouci argumente glavne funkcije main():

int main( int argc, char *argv[] )

ili (ponegde):

int main( int argc, char **argv )


FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
17.09.2006. u 21:28 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:51
Citat:
Brolly: Posto sadrzi void, znaci da funkcija ne vraca vrednost. Kada bi sadrzala jedno *, to bi znacilo da vraca vrednost po referenci, ali sta znace dve zvezde?

Osjecam da je ovo skolska izobrazba. Jasam li u pravu?
17.09.2006. u 21:51 

Mali Misha
Mihajlo Anđelković

Član broj: 79396
Poruke: 311
*.powernet.bg.

ICQ: 195487525


Profil

icon Re: Deklaracija funkcije **18.09.2006. u 07:57
Citat:
Osjecam da je ovo skolska izobrazba. Jasam li u pravu?

Da pojasnim...

Citat:
Kada bi sadrzala jedno *, to bi znacilo da vraca (1) vrednost po referenci (2), ali sta znace dve zvezde?

1. Koliko se razume, još uvek pričaš o vrednostima argumenata funkcije (deo između zagrada). Oni ne označavaju tip parametra koji će funkcija vratiti nego ulazne parametre.

2. Upotreba zvezdica ne implicira upotrebu referenci (kojih ni nema u C..) već pokazivača.

Već si dobio odgovor da dve zvezdice znače pokazivač na pokazivač. Tako je i sa tri (pokazivač na pokazivač na pokazivać), četri itd..

U dodatku, to što si napisao se zove deklaracija funkcije. Svaka deklaracija funkcije u C ima sledeću formu:

[tip vraćene vrednosti] [ime funkcije] ( [tipovi (ili i imena) argumenata, razdvojeni zarezima] );
Dim di dam...
18.09.2006. u 07:57 

Brolly

Član broj: 66668
Poruke: 339
*.neobee.net.



Profil

icon Re: Deklaracija funkcije **18.09.2006. u 20:07
Pazi ovako, nas u skolama uce sledece:
Kada zelimo da funkcija vrati jednu vrednost, deklarisem je sa tipom koji vraca, npr.:

int saberi(int x, int y);

... i onda pred kraj funkcije otkucam npr.

return zbir;

I onda kada u main funkciji pozovem ovu funkciju (npr. a=saberi(x,y)), funkcija je vratila tu jednu vrednost.

ALI!!!

Ako zelimo da ona vrati vise od jedne vrednosti, onda se radi tako sto se u main funkciji deklarisu pokazivaci, npr:

int *zbir, *razlika;

...a funkcija se deklarise sa void:

void racunaj(int x, int y, int *zbir, int *razlika);

...i onda ne moramo koristiti "return" jer preko pokazivaca imamo direktan pristup adresama, odnosno funkcija vraca adrese. Kada ispred pokazivaca postavim '*', onda znaci da mislim na vrednost pokazivaca. Ovo profesori programiranja u NSu zovu vracanje vrednosti po referenci. Ono se koristi kada funkcija ili vraca vise vrednosti, ili uopste ne vraca vrednost vec menja vrednost prosledjenih argumenata.

Naglasio bih da nisam ovu poruku napisao da bih "pametovao", ja sam svestan da jako malo znam (obratite paznju na kom je forumu tema), samo hocu da iskazem ono malo sto sam naucio koje je nadam se tacno. Jedva skontam nesto za ove tri godine, i onda mi dodje neko i kaze da to sto sam ucio ne postoji u C-u...
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
18.09.2006. u 20:07 

Mali Misha
Mihajlo Anđelković

Član broj: 79396
Poruke: 311
*.powernet.bg.

ICQ: 195487525


Profil

icon Re: Deklaracija funkcije **18.09.2006. u 20:29
Saosećam. Saslušaj sada ovo, opušteno:

Citat:
Ako zelimo da ona vrati vise od jedne vrednosti, onda se radi tako sto se u main funkciji deklarisu pokazivaci,

Prema mome shvatanju, time funkcija ne vraća više parametara, nego ih piše na prosleđene (pomoću pokazivača) joj adrese u memoriji, sa kojih se kasnije mogu koristiti od strane drugih funkcija.

Ali, moguće je da funkcija stvarno vrati više vrednosti, koje su segmentirane u jednoj promenjivoj: pomoću struktura - vidi primer koji sam okačio uz post.

Termin referenca se koristi za jednu alternativu pokazivačima, koja je uvedena tek u C++.
Dim di dam...
Prikačeni fajlovi
18.09.2006. u 20:29 

Brolly

Član broj: 66668
Poruke: 339
*.dialup.neobee.net.



Profil

icon Re: Deklaracija funkcije **19.09.2006. u 22:12
Ma ok. Mada sve to sto funkcija radi za mene je "visa matematika". Ja znam ono osnovno, sta treba da otkucam da bih dobio nesto, a sad termine poput "pretprocesor, hip, zona podataka, stek..." koje koriste moji profesori ne znam, niti me zanimaju. Programiranje je predmet za koji jednostavno nemam dovoljno visok koeficijent inteligencije. Hvala na odgovorima, poz
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
19.09.2006. u 22:12 

Mali Misha
Mihajlo Anđelković

Član broj: 79396
Poruke: 311
*.powernet.bg.

ICQ: 195487525


Profil

icon Re: Deklaracija funkcije **20.09.2006. u 16:02
Pazi, po pravilu ovde niko ne bi trebao da pokuša da te demorališe ili slično. Nadam se da moje komentare nisi shvatio u tom svetlu.
Dim di dam...
20.09.2006. u 16:02 

Brolly

Član broj: 66668
Poruke: 339
*.dialup.neobee.net.



Profil

icon Re: Deklaracija funkcije **21.09.2006. u 07:01
Ma jok
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
21.09.2006. u 07:01 

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 272
*.dynamic.sbb.co.yu.



Profil

icon Re: Deklaracija funkcije **02.10.2006. u 21:44
Batali taj stav sa manjkom inteligencije!!! Vrlo retko ces cuti da glup covek da takvu izjavu, pa ti je i sumnja u sopstvenu inteligenciju skoro dokaz postojanja iste ;)

Funkcije MOGU VRATITI SAMO JEDNU VREDNOST!!! Zapamti ovo, jer uvek vazi. Fora sa slanjem pointera funkciji je da se u samoj funkciji odigra neka promena na adresi na koju taj pointer pokazuje.

Kad saljes neke argumente funkciji, ona u stvari napravi kopije tih vrednosti, tako da kad se funkcija zavrsi, vrednosti koje si joj poslao ostanu nepromenjene. U slucaju pointera to nije bitno, jer i kopija pointera pokazuje na istu memoriju kao i originalni pointer, tako da je moguce menjati i stvari koje su definisane izvan funkcije. To nikako ne znaci da funkcija vraca vise od jedne vrednosti (u tvom slucaju cak ni jednu).

Znaci, sta treba da zapamtis? -
1) Ono sto dolazi u funkciju se ne moze menjati u samoj funkciji.
2) Izuzetak od ovog pravila je kada funkciji posaljes pointer, pa ona menja nesto na adresi na koju on pokazuje.
3) Funkcija vraca samo jednu vrednost i ako zelis da je koristis u daljem toku programa moras tu vrednost "prihvatiti" u neku promenljivu definisanu u mainu (ili u funkciji u kojoj ces ga koristiti).

Nemoj pokleknuti sada, kad savladas te osnovne stvari, dalje je mnogo lakse:)))
De si Deda...
02.10.2006. u 21:44 

Brolly

Član broj: 66668
Poruke: 339
*.neobee.net.



Profil

icon Re: Deklaracija funkcije **04.10.2006. u 09:42
Ma kakvi bre, mozda mi i podje za rukom, ne znam. Hvala na inspirativnom postu :) Skontao sta si rekao, i sada je jasnije sta se zaista desava.

Evo je lekcija. Nabavio sam je, profesori drze otkucano u wordu, pa sami procenite da li je ispravno. Ja ne bih da se time previse opterecujem.



I imam jedno pitanje, ne bih da otvaram novu temu.

Sta je buffer? To su spominjali kada smo ucili funkciju fflush, koja ima ulogu da ga "oslobadja"?
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
Prikačeni fajlovi
04.10.2006. u 09:42 

VukSta
Vuk Stankovic
Novi Sad

Član broj: 102879
Poruke: 33
*.inffo.net.



Profil

icon Re: Deklaracija funkcije **06.10.2006. u 11:22
@Brolly
da li se ovi casovi mogu skinuti negde sa neta?
06.10.2006. u 11:22 

Brolly

Član broj: 66668
Poruke: 339
*.neobee.net.



Profil

icon Re: Deklaracija funkcije **06.10.2006. u 23:24
Ne.
U svetu postoji 10 vrsta ljudi: oni koji znaju binarne brojeve i oni koji ih ne znaju. :)
06.10.2006. u 23:24 

[es] :: C programiranje :: C za početnike :: Deklaracija funkcije **

[ Pregleda: 1203 | Odgovora: 13 ]

Postavi temu Odgovori

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