01 Údaje v pamäti
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 uvádza tému pamäte v jazyku C, jej pridelovania a uloženia dát. Na príklade výmeny hodnôt dvoch premenných (swap) sa ukazuje, že kód funguje v hlavnej funkcii main, no po vyčlenení do samostatnej funkcie prestane fungovať. Pomocou debuggera cgdb a operátora referencie (&) sa zistí, že premenné vo funkciách main a swap ležia na rôznych adresách, pretože parametre sa odovzdávajú hodnotou, teda ako kópie. Riešením je odovzdať adresy premenných a v funkcii ich prijať ako ukazovatele (int *) s využitím operátora dereferencie (*). Ďalej sa spomína veľkosť typu int (4 bajty) a zápis adries v hexadecimálnej sústave.
- - Jazyk C vyžaduje explicitnú prácu s pamäťou, na rozdiel od vyšších jazykov ako Python alebo Java.
- - Výmenu hodnôt dvoch premenných možno urobiť cez pomocnú premennú tmp, ale aj bez nej.
- - Parametre funkcie sa v C štandardne odovzdávajú hodnotou, takže funkcia pracuje len s kópiami.
- - Operátor referencie (&) vráti adresu premennej; v debuggeri ju zobrazí príkaz print.
- - Dva po sebe idúce int-y sú od seba vzdialené 4 bajty, čo závisí od architektúry (overenie cez sizeof).
- - Na zmenu originálov treba funkcii poslať adresy a prijať ich ako ukazovatele (int *).
- - Operátor dereferencie (*) umožňuje prístup k obsahu na danej adrese, nazýva sa aj value-of operátor.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky