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...
...