Professional Documents
Culture Documents
Pokazivači se često koriste za prenos podataka u funkciji preko adrese, što se postiže najavom
argumenta funkcije kao pokazivača.
Primjer.
/*Funkcija za zamjenu vrijednosti upotrebom pokazivača je */
#include<stdio.h>
void zamjena (int*a, int*b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
void main()
int a, b;
printf(“\n Unesite dva cijela broja“);
scanf(“%d,%d“,&a,&b);
printf(“Vrijednosti prije zamjene \na=%d\tb=%d“, a, b);
zamjena (&a,&b);
printf(“\nVrijednosti nakon zamjene su \ na=%d\tb=%d“, a, b);
}
Osim kao argument pokazivač se može koristiti I tako da izlazna vrijednost iz funkcije bude
pokazivač.
Takođe je moguće definisati i pokazivač na funkciju.
Polja i pokazivačč i
Elementima polja je najjednostavnije pristupati preko indeksa.
Pojedinom elementu niza se može pristupiti i preko adrese, jer je njegovo ime bez uglastih
zagrada pokazivač na polje
Za deklarisani niz
int niz[10];
p=&niz[0];
ili
p=niz;
Pokazivač p sadrži adresu prvog elementa niza,a naredba a=*p promjenljivoj a pridružuje
vrijednost prvog elementa niza.
Kako pokazivač p pokazuje na prvi element polja onda će pokazivač p+1 pokazivati na drugi
element niza I tako redom.
Dakle, indeks elementa niza odgovara cjelobrojnoj vrijednosti za koju se povećava pokazivač.
Postoje dva načina pristupanjima pojedinim elementima niza:
I način
naredbom p++ pokazivac se pomakne na sljedeci element u nizu I zatim se vrijednost toga
elementa pridruzi promjenljivoj a.
Zadatak
Neka je dat niz u koji su upisane vrijednost 1, 12, 32, 14 i 5. Napišite program koji računa sumu
elemenata tog niza upotrebom pokazivača.
#include<stdio.h>
void main()
{
int i, s=0, niz[]={1,12,32,14,5};
int *pok;
pok=&niz[0];
for(i=0;i<5;i++)
s+=*pok++;
printf("Trazeni zbroj je %d",s);
}
Zadatak
Korištenjem pokazivača napravite program kojimće te omogućiti unos jednodimenzionalnog niza duljine
10 elemenata i ispisati najveći element tog niza.
#include<stdio.h>
void main()
{
int i, max, niz[10];
int *pok;
printf("Upisite vrijednosti clanova niza: \n");
for (i=0;i<10;i++)
{
printf("%d:",i+1);
scanf("%d",&niz[i]);
}
pok=&niz[0];
max=*pok;
for(i=1;i<10;i++)
{
pok++;
if (*pok>max) max=*pok;
}
printf("Najveci element niza je %d",max);
}