Vrednosti koje funkcije daju mogu da budu samo pojedinačni (skalarni) podaci. Zbog toga nizovi ne mogu da budu povratna vrednost funkcija, već samo mogu da se funkcijama daju kao parametri.

Pokazivači su pojedinačni podaci (skalarni podaci), pa mogu da budu vrednosti koje funkcije daju., a ne samo njihovi parametri. Pokazivačka vrednost koju funkcija daje može da pokazuje na neki pojedinačni podatak, na element niza, ali i na ceo niz (tj.na prvi element niza).

Kada je vrednost funkcije pokazivač, pri definisanju funkcije ispred imena funkcije treba navesti zvezdicu (*). Tip na početku funkcije označava tip pokazivanih podataka.

Primer:

#include <stdio.h>
int *p_min(int a[], int n) /*pokazivac na najmanji element niza*/
{
int *pm = a, *p;
for( p=a+1; p<a+n; p++)
if( *p < *pm ) pm = p;
return pm;
}
int main(void)
{
int a[50], n, i, *pm, min;
printf("unesite duzinu niza: ");
scanf("%d",&n);
printf("\n unesite elemente niza: ");
for(i=0; i<n; i++) scanf("%d", &a[i]);
pm = p_min(a,n); /* pokazivac na najmanji element */
printf("\n Min: %d ",*pm);
min = *p_min(a,n); /* vrednost najmanjeg elementa */
printf("\n Min: %d", min);
return 0;
}

Funkcija p_min je definisana tako da kao vrednosti funkcije vraća pokazivač na cele brojeve (*int). U ovom slučaju to će biti pokazivač na element niza  koji ima najmanju vrednost - niz je parametar funkcije, pokazivač koji funkcija vraća pokazuje na tačno onaj element tog niza koji ima najmanju vrednost.

Pri prvom pozivanju u glavnom programu, vrednost funkcije p_min se dodeljuje pokazivaču pm koji je definisan kao pokazivač na cele brojeve. Vrednost najmanjeg elementa je *pm.

Kada je vrednost funkcije pokazivač, na nju može da se primeni indirektno adresiranje i time se dobija vrednost podatka na koji pokazuje vraćeni pokazivač.

Pošto operator za pozivanje funkcija egg ima najveći prioritet od svih operatora, u izrazu *p_min(a,n) prvo se pozove funkcija, a operator * se primenjuje na vraćenu vrednost. U našem primeru, konačan rezultat će biti vrednost najmanjeg elementa u nizu. Tip tog rezultata je int.

Last modified: Saturday, 17 November 2018, 8:12 PM