kazalci uvod v kazalce primer programa pointers cpp oglejmo si program pointers cpp in si osvezimo osnovne pojme kazalec je tako pri ansi c kot pri c is deklariran z zvezdico pred imenom spremenljivke kazalec je kazalec na spremenljivko nekega specificnega tipa in naj ga ne bi uporabljali pri spremenljivkah drugih tipov tako je pt int is kazalec na celostevilcno spremenljivko v vrstici je kazalcu pt int dodeljen naslov spremenljivke pig vrstica pa uporablja kazalec pt int za pristevanje vrednosti spremenljivke dog k vrednosti pig kot to poznamo ze od jezika c slika je graficna ponazoritev podatkovnega prostora po izvedbi vrstice pravokotniki s piko predstavljajo kazalce v vrstici uporabimo naslov v kazalcu se za izpis vrednosti spremenljivke pig preko izhodnega tokovnega objekta cout podobno je uporabljen kazalec pt float ki mu je prirejen naslov x konstantni kazalci in kazalci na konstante definicija c dopusca tako definicijo kazalca na konstanto da se vrednost konstante sicer ne more spremeniti kazalec pa lahko prestavimo na drugo konstanto ali spremenljivko definicijo kazalca na konstanto ponazoruje vrstica lahko pa definiramo tudi konstantni kazalec ki ga ne moremo spreminjati tak kazalec ponazoruje vrstica take konstrukte uporabljamo predvsem kot pomoc prevajalniku za izboljsavo kvalitete kodiranega programa kazalec na prazno void kazalec na void prazno zasledimo v standardu ansi c takemu kazalcu lahko dodelimo vrednost kazalca kateregakoli drugega tipa v nasem primeru imamo kazalec general ki je tipa void in ki mu v vrstici dodelimo naslov spremenljivke tipa int v vrstici pa naslov spremenljivke tipa float vidimo da lahko programer s takim kazalcem kaze na razlicne stvari kar je uporabno pri prenosu informacij v programu prakticen primer uporabe takega kazalca je funkcija malloc ki vraca kazalec na void ta kazalec lahko naslavlja karkoli in omogoca prenos naslova na kazalec pravilnega tipa dinamicna alokacija in dealokacija primer programa newdel cpp program newdel cpp demonstrira uporabo operatorjev new and delete uporaba teh operatorjev je podobna uporabi funkcij malloc in free pri programskem jeziku c ker sta operatorja new in delete del samega jezika c je njuna uporaba bolj ucinkovita od uporabe funkcij vrstici in prikazujeta uporabo kazalcev na klasicen c jevski nacin vrstica pa prikazuje uporabo operatorja new ta operator dopolnjuje besedica ki ustreza zahtevanemu tipu podatka v nasem primeru int kazalec point kaze na dinamicno alocirano celostevilcno spremenljivko v vrstici je tej dinamicno alocirani spremenljivki dodeljena vrednost naslednji dve vrstici pa to prednost izpiseta na zaslon v vrstici alociramo novo spremenljivko in njen naslov vpisemo v kazalec point v naslednji vrstici priredimo isti naslov se kazalcu point tako smo zgubili referenco na spremenljivko ki jo je doslej naslavljal kazalec point te spremenljivke ne bomo mogli nikoli vec uporabiti niti dealocirati taka uporaba kazalcev je torej nevarna v vrstici je spremenljivka ki jo naslavlja point dealocirana z operatorjem delete tako odslej kazalca point ne moremo vec zbrisati saj ne kaze na nic vec operator delete po definiciji ne naredi nic ce navedeni kazalec kaze na vrednost null z njim lahko brisemo le podatke ki so bili predhodno alocirani z operatorjen new program vsebuje se nekaj vrstic s spremenljivkami tipa float in kazalci nanje zakljucuje pa ga primer ko za operatorjem new napovemo alokacijo bloka dolocene dolzine glej vrstici oziroma v konkretnem primeru najprej alociramo blok bytov nato pa blok pomnilnika ki je za bytov vecji od strukture date v vrsticah in vidimo da moramo pri dealokaciji polj uporabiti oglate oklepaje seveda lahko tudi v c se vedno uporabljamo standardne c jevske funkcije malloc calloc in free kazalci na funkcije primer programa funcpnt cpp program funcpnt cpp ponazoruje uporabo kazalca na funkcijo to ni nic novega saj poznamo to moznost tudi v jeziku ansi c v vrstici je definiran kazalec na funkcijo ki ne vraza nic void in uporablja en sam formalni parameter tipa float tej obliki ustrezajo vse tri funkcije deklarirane v vrsticah od do in jih lahko zato klicemo s tem kazalcem v vrstici klicemo funkcijo print stuff s parametrom pi v vrstici dodelimo funkcijskemu kazalcu function pointer vrednost print stuff in uporabimo ta kazalec za ponoven klic funkcije v vrstici vrstice do nam dajejo dodatne zglede ime funkcije je v bistvu konstantni kazalec na to funkcijo in se tako ne more spreminjati to je tako kot pri imenovanju polj arrays kjer je ime polja konstantni kazalec na prvi element polja kazalo funkcije