11 Smerníky v jazyku C
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška vysvetľuje prácu so smerníkmi (pointermi) v jazyku C. Smerník je premenná, ktorá uchováva adresu inej premennej; definuje sa podobne ako ukazovaná premenná (napr. int *pa) a treba ho inicializovať, prípadne nastaviť na 0 (NULL). Operátor & vracia adresu premennej, operátor * (dereferencia) umožňuje čítať a zapisovať hodnotu na adrese, kam smerník ukazuje. Ukazuje sa výpis adresy cez printf s formátom %p a použitie smerníka v scanf bez operátora &. Druhá časť sa venuje dynamickej pamäti: malloc alokuje miesto na halde (s pretypovaním z void*), free ju uvoľní a smerník je po uvoľnení vhodné nastaviť na NULL, aby sa predišlo prístupu k neplatnej pamäti. Ak sa smerník presmeruje inam bez uvoľnenia, vzniká únik pamäte.
- - Smerník je premenná uchovávajúca adresu a pri definícii sa inicializuje, prípadne hodnotou 0 (NULL).
- - Operátor & vracia adresu premennej, ktorú možno priradiť smerníku.
- - Operátor * (dereferencia) pristupuje k hodnote na adrese, kam smerník ukazuje; priamo priradiť číslo adrese (pa = 1) je chyba.
- - Adresu možno vypísať cez printf s formátom %p; scanf pracuje so smerníkmi, takže pri smerníku sa & nepíše.
- - Funkcia malloc alokuje pamäť na halde, vracia void*, preto sa pretypuje na požadovaný typ (int *).
- - Dynamická premenná nemá identifikátor, pristupuje sa k nej len cez smerník, a musí sa uvoľniť funkciou free.
- - Po free treba smerník nastaviť na NULL, inak hrozí pád programu pri prístupe k uvoľnenej pamäti.
- - Presmerovanie smerníka bez uvoľnenia pamäte spôsobí jej stratu (únik pamäte).
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky