Professional Documents
Culture Documents
Poka Zivac I
Poka Zivac I
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Adresni operator
programski jezik C prua mogu nost c
manipulacije s memorijom ra unala c koriste i adresni operator & moemo saznati c memorijsku lokaciju bilo koje varijable za ispis memorijske lokacije koristimo format %p
double x=0.5; printf("Adresa varijable x: %p\n",&x);
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Adresni operator
programski jezik C prua mogu nost c
manipulacije s memorijom ra unala c koriste i adresni operator & moemo saznati c memorijsku lokaciju bilo koje varijable za ispis memorijske lokacije koristimo format %p
double x=0.5; printf("Adresa varijable x: %p\n",&x);
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Adresni operator
programski jezik C prua mogu nost c
manipulacije s memorijom ra unala c koriste i adresni operator & moemo saznati c memorijsku lokaciju bilo koje varijable za ispis memorijske lokacije koristimo format %p
double x=0.5; printf("Adresa varijable x: %p\n",&x);
Adresa varijable x: 0xbfb399b8 0x ispred broja ozna ava heksadecimalni c brojevni sustav
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
elementa
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
kao broja c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
&z[0]=0xbfb941ec
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
&z[0]=0xbfb941ec
broja i=1 c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
&z[0]=0xbfb941ec &z[1]=0xbfb941f0
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
&z[0]=0xbfb941ec &z[1]=0xbfb941f0
broja i=2 c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
broja i=3 c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
mijenja jer ra unalo varijablu ne stavlja uvijek na c isto mjesto u memoriji promotrimo sljede i dio koda c
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Oprez! u ostatku ovih predavanja koristit cemo shematski zapis adresa varijabli adrese cemo, radi jednostavnosti, zapisivati kao male cijele brojeve
c 97 14 15 16 17 18 19
0xbfb941f0
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
dodamo *
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
tip_varijable *ime_pointera;
Osnove programiranja
dodamo *
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
tip_varijable *ime_pointera;
Osnove programiranja
dodamo *
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
tip_varijable *ime_pointera;
Osnove programiranja
dodamo *
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
tip_varijable *ime_pointera;
Osnove programiranja
dodamo *
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
tip_varijable *ime_pointera;
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
pokazuje dohva amo operatorom c dereferenciranja * pointer pa pokazuje na varijablu a pa gornjom naredbom varijabli a pridruujemo vrijednost 5
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
pokazuje dohva amo operatorom c dereferenciranja * pointer pa pokazuje na varijablu a pa gornjom naredbom varijabli a pridruujemo vrijednost 5
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
pokazuje dohva amo operatorom c dereferenciranja * pointer pa pokazuje na varijablu a pa gornjom naredbom varijabli a pridruujemo vrijednost 5
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
pokazuje dohva amo operatorom c dereferenciranja * pointer pa pokazuje na varijablu a pa gornjom naredbom varijabli a pridruujemo vrijednost 5
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
Osnove programiranja
operatora &
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int *pa; /*deklaracija pointera pa na tip int*/ int a; /*deklaracija varijable a tipa int*/ pa=&a; /*adresu varijable a smo pridruzili pointeru pa*/
deklariramo pointer pa na cjelobrojnu varijablu deklariramo varijablu a cjelobrojnog tipa pointeru pa pridruujemo adresu varijable a sadraj memorijske lokacije na koju pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Oprez!: znak * ima dvije razli ite uloge: c u deklaraciji varijable ozna ava da je varijabla c pokaziva kog tipa c u izvrnim naredabama on predstavlja operator dereferenciranja primjenom operatora dereferenciranja na pointer dohva amo sadraj varijable na koju pointer c pokazuje
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 65 ip
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 17
98
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 65 ip
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 1 17
98
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 2 65 ip
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 1 17
98
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 2 65 ip 98
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 1 17
tipa
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 2 65 ip 17 98
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 1 17
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 1 65 ip 17 98
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 1 17
Osnove programiranja
Primjer:
int x,y; x=1; y=2; int *ip; ip=&x; y=*ip; *ip=0; y 1 65 ip 17 98
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
x 0 17
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip
65
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip 65
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip 17 65
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip 17 65
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip 17 65
Osnove programiranja
format %p
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
int x=1; int *ip; ip=&x; printf("Vrijednost pointera ip:%p\n",ip); printf("Sadrzaj adrese na koju pokazuje ip:%d\n",*ip); printf("Vrijednost varijable x:%d\n",x);
x 1 17
ip 17 65
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Pointeri i polja
polja i pointeri su usko povezani jer varijabla
z[0] 13 16
z[1] 45 20 z 16 98
z[2] 25 24
incijaliziramo polje od 3
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Pointeri i polja
polja i pointeri su usko povezani jer varijabla
z[0] 13 16
z[1] 45 20 z 16 98
z[2] 25 24
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Pointeri i polja
polja i pointeri su usko povezani jer varijabla
z[0] 13 16
z[1] 45 20 z 16 98
z[2] 25 24
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
pove ati upotrebom pointera c promotrimo ponovo funkciju koja zamjenjuje vrijednost dviju varijabli
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
pove ati upotrebom pointera c promotrimo ponovo funkciju koja zamjenjuje vrijednost dviju varijabli
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
pove ati upotrebom pointera c promotrimo ponovo funkciju koja zamjenjuje vrijednost dviju varijabli
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
pove ati upotrebom pointera c promotrimo ponovo funkciju koja zamjenjuje vrijednost dviju varijabli
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
zamijeni
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
vrijednost varijable tmp pridruimo varijabli y zamijenili smo vrijednosti varijabli x i y u funkciji
zamijeni
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
zamijeni
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
a b 3 3 30 40 varijabli na koju pokazuje pointer x (varijabla a u funkciji main) pridruimo vrijednost varijable na koju pokazuje pointer y (varijabla b u funkciji main)
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Passing by value: funkciji prosljedujemo vrijednost varijabli koje se kopiraju u lokalne varijable funkcije funkcija nema pristup varijablama u dijelu programa koji je poziva Passing by reference: funkciji prosljedujemo adrese varijabli funkcija sada ima puni pristup varijablama u dijelu programa koji je poziva
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
vratiti vie od jedne vrijednosti funkcija split kao argument uzima realni broj i vra a njegov cijeli i decimalni dio c return naredbom moemo vratiti ili cijeli ili decimalni dio, ali ne oba istovremeno problem rjeavamo tako da funkciji split prosljedujemo adrese dvije varijable iz glavnog dijela programa u memorijske lokacije na tim adresama funkcija upisuje cijeli i decimalni dio argumenta na taj na in cijeli i decimalni dio argumenta c postaju vidljivi i u glavnom dijelu programa
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
dio varijable x
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
void split(double x,int *a,double *b) { int tmp; tmp=(int)x; *a=tmp; *b=x-tmp; return; } int main() { int cijeli; double dec,broj; broj=3.14; split(broj,&cijeli,&dec); return 0; }
vra amo se u funkciju main c varijabla cijeli sadri cijeli dio varijable broj, dok
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
iz dijela programa koji je poziva, moramo joj prosljediti adresu te varijable zato ispred varijable u funkciji scanf moramo upotrijebiti adresni operator & ako elimo u itati vrijednost u cjelobrojnu c varijablu var, funkciji scanf moramo prosljediti adresu te varijable
scanf("%d",&var);
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Pointer na funkciju
pointer na funkciju deklariramo na sljede i na in c c
tip_rez(*ime)(tip_1 arg_1, tip_2 arg_2,. . . ,tip_n arg_n);
uzima jednu varijablu tipa double, a kao rezultat vra a vrijednost tipa double c pointer na takav tip funkcije deklariramo ovako
double(*fp)(double x);
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
double koja kao argument uzima jednu varijablu tipa double u ovom trenutku pkvad jo ne pokazuje na neku odredenu funkciju
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
kvad
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
ispis: kvad(2.0)=4.0
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
ispis: pkvad(2.0)=4.0
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> double kvad(double x) { return x*x; } int main() { double(*pkvad)(double x); pkvad=&kvad; printf("kvad(2.0)=%lf\n",kvad(2.0)); printf("pkvad(2.0)=%lf\n",pkvad(2.0)); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
nekoj funkciji kao argument trebamo prosljediti neku drugu funkciju promotrimo primjer funkcije koja integrira proizvoljnu funkciju na intervalu [a,b] koristimo (ne odve preciznu) trapeznu formulu c
b
f (x)dx =
a
ba (f (a) + f (b)) 2
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
sinus (&sin)
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
cosinus (&cos)
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
#include<stdio.h> #include<math.h> double integrator(double a, double b, double (*f)(double)) { return 0.5*(b-a)*((*f)(a)+(*f)(b)); } int main() { double intsin=integrator(0.0,1.0,&sin); double intcos=integrator(0.0,1.0,&cos); printf("Integral funkcije sinus: %lf\n",intsin); printf("Integral funkcije cosinus: %lf\n",intcos); return 0; }
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
NULL pointer
u praksi se cesto susre emo s pojmom NULL c
pointer pointeru nije mogu e pridruiti cjelobrojnu c vrijednost iznimka je 0 koja u programskom jeziku C nije legalna memorijska adresa pointer kojem pridruimo vrijednost 0 ne pokazuje ni na jednu varijablu takav pointer zovemo NULL pointer naj e e kod pridruivanja koristimo simboli ku c c c konstantu NULL (=0) deniranu u biblioteci <stdio.h>
Osnove programiranja
Pointeri
Adresni operator Op enita svojstva c Pointeri i polja Pointeri kao argument funkcija Pointer na funkciju NULL pointer Wild pointer
Wild pointer
pointer koji je deklariran, a nije inicijaliziran ima
proizvoljnu vrijednost zovemo wild pointer takvi pointeri cesto uzrokuju bugove u programu pa ih treba izbjegavati pod svaku cijenu najjednostavnije je svaki pointer pri deklaraciji inicijalizirati na vrijednost 0
int *ip=NULL;