01 Údaje v pamäti

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.