Hallo, welkom terug. Dit zal onze laatste opdracht zijn, onze laatste
uitdaging voor onze pointer-sectie.
In deze uitdaging wil ik dat je
begrijpt hoe dynamische geheugentoewijzing werkt. Dus je zult een string moeten mallocen.
Het wordt vrij basic.
Maar het zal u inzicht geven
in dit hele concept van dynamische geheugentoewijzing.
Wat zijn de voordelen van dynamische geheugentoewijzing?
Welnu, het betekent dat u voldoende geheugen kunt toewijzen wanneer u het nodig heeft.
U hoeft geen geheugen te verspillen. En als u meer geheugen nodig heeft, kunt u opnieuw toewijzen.
Deze opdracht zorgt ervoor dat je malloc gaat gebruiken.
Dus in deze uitdaging ga je een programma schrijven dat je begrip van dynamische geheugentoewijzing test.
Ik wil dat je een programma schrijft waarmee de gebruiker een tekenreeks kan invoeren.
Dus je zult scanf moeten gebruiken. Je kunt ook git s gebruiken, we hebben
er nog niet vaak over gesproken, maar met git s of f git
s op de standaard invoerstroom kun je een
string lezen die spaties bevat. Onthoud dat scanf de
string alleen tot een spatie zal lezen.
Als je git s gebruikt, kun je meerdere strings lezen, gescheiden door spaties, hoe dan
ook is prima, scanf of git s hoe dan ook.
U laat de gebruiker een string invoeren. Het programma gaat de
ingevoerde tekst afdrukken.
Dat lijkt misschien heel eenvoudig, maar het verschil is dat het programma
dynamische geheugentoewijzing gaat gebruiken.
Je kunt de gebruiker ook de limiet laten invoeren van de tekenreeks
die ze invoeren, en dan kun je die gebruiken voor malloc, zodat je weet hoeveel bytes je moet toewijzen.
U moet een tekenaanwijzer maken, alleen een tekenaanwijzer, geen tekenarrays.
Ik wil dat je geheugen toewijst. Onthoud dat wanneer u de tekenreeks
maakt, het geheugen automatisch al voor u wordt toegewezen op basis
van de grootte die
u tussen de haakjes plaatst. En nogmaals, een groot nadeel daarvan is dat je nu
opnieuw moet compileren als je iets probeert in te voeren dat groter is dan wat je in de grootte hebt ingevoerd.
Het is statisch. Dat geheugen wordt toegewezen tijdens het compileren.
Dynamisch geheugen wordt toegewezen wanneer u het programma uitvoert.
En zo kunt u bepalen hoeveel geheugen u wilt toewijzen op basis van wat de gebruiker invoert.
Vraag de gebruiker dus nogmaals om een getal in te voeren voor het
aantal bytes dat u aan de string wilt toewijzen.
Vraag de gebruiker vervolgens om de tekenreeks in te voeren.
En je moet het geheugen correct toewijzen en dan die karakteraanwijzer doorgeven aan scanf
of git s
en dan in feite gewoon de ingevoerde tekst weergeven.
En tot slot, vergeet de allerbelangrijkste gratis functie niet.
U wilt altijd uw geheugen vrijgeven als u klaar bent met het
gebruik ervan en u wilt er zeker van zijn dat u dat doet zodat andere
programma's dat geheugen kunnen gebruiken. Geheugen is een schaarse
hulpbron, vooral bij real-time programma's van embedded systemen, dus gebruik het
geheugen niet te veel, maar geef het vrij.
Veel succes, en ik zal een oplossing bieden in de volgende lezing. Dank u.