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

Deklaracija funkcije **

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

[ Pregleda: 4533 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brolly

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



Profil

icon Deklaracija funkcije **17.09.2006. u 15:26 - pre 187 meseci
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?
...
 
Odgovor na temu

skijash
Nikola Petrović
Software engineer, Vast.com
BG

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

Sajt: www.mafiamotorsport.org


+2 Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:26 - pre 187 meseci
void racunaj_dohodak(Tradnik **pok);
znaci da funkcija ne vraca vrednost, a pok je argument koji je pokazivac na pokazivac na tip Tradnik
...:::|skijash|:::...
www.beoprint.rs ::: www.mafiamotorsport.org
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+633 Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:28 - pre 187 meseci
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 )

 
Odgovor na temu

NrmMyth
Ivan Maček
Split

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

Sajt: www.dump.hr


Profil

icon Re: Deklaracija funkcije **17.09.2006. u 21:51 - pre 187 meseci
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?
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

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

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Deklaracija funkcije **18.09.2006. u 07:57 - pre 187 meseci
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] );
Ipak se ++uje.
 
Odgovor na temu

Brolly

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



Profil

icon Re: Deklaracija funkcije **18.09.2006. u 20:07 - pre 187 meseci
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...
...
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

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

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Deklaracija funkcije **18.09.2006. u 20:29 - pre 187 meseci
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++.
Ipak se ++uje.
Prikačeni fajlovi
 
Odgovor na temu

Brolly

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



Profil

icon Re: Deklaracija funkcije **19.09.2006. u 22:12 - pre 186 meseci
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
...
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

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

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Deklaracija funkcije **20.09.2006. u 16:02 - pre 186 meseci
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.
Ipak se ++uje.
 
Odgovor na temu

Brolly

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



Profil

icon Re: Deklaracija funkcije **21.09.2006. u 07:01 - pre 186 meseci
Ma jok
...
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

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



+1 Profil

icon Re: Deklaracija funkcije **02.10.2006. u 21:44 - pre 186 meseci
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...
 
Odgovor na temu

Brolly

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



Profil

icon Re: Deklaracija funkcije **04.10.2006. u 09:42 - pre 186 meseci
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"?
...
Prikačeni fajlovi
 
Odgovor na temu

VukSta
Vuk Stankovic
Novi Sad

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



Profil

icon Re: Deklaracija funkcije **06.10.2006. u 11:22 - pre 186 meseci
@Brolly
da li se ovi casovi mogu skinuti negde sa neta?
 
Odgovor na temu

Brolly

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



Profil

icon Re: Deklaracija funkcije **06.10.2006. u 23:24 - pre 186 meseci
Ne.
...
 
Odgovor na temu

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

[ Pregleda: 4533 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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