Hallo en welkom terug. In deze lezing wil ik een demonstratie of
oplossing geven van onze vorige uitdaging, waardoor je bekend raakte met de syntaxis
van de aanwijzer, het concept van een aanwijzer, het
toewijzen van een adres aan een aanwijzer en het weergeven van uitvoer voor een aanwijzer.
Dus laten we codeblokken naar voren brengen, en we gaan een nieuw project maken, een
nieuw c-project dat gewoon pointer basics zal worden genoemd, omdat het de basics van pointers gaat doen.
We weten dus hoe we dit allemaal moeten doen. We gaan de consoletoepassing selecteren,
zorg ervoor dat we c hebben en noem
deze pointer basics.
Dit aanwijzerconcept is echt heel belangrijk.
Dus we beginnen langzaam en gaan van daaruit verder.
Hier gaan we. Hier hebben we onze belangrijkste.
Nu willen we alleen nog een integer-variabele
maken en vervolgens een pointervariabele.
En we willen beide initialiseren.
Dus het eerste wat ik ga doen is dat ik een
integer-variabele ga maken en die een naam of getal ga geven.
En ik ga dit initialiseren naar 150.
Om een pointervariabele te maken, moet deze van hetzelfde type zijn.
Om een pointer te maken, hoeft u alleen maar het gegevenstype en vervolgens de asterisk in
de declaratie in te voeren en dan noemen we dit pnum voor het pointernummer.
Gewoonlijk wilt u uw variabelen die pointers zijn, beginnen met het p-voorvoegsel.
En het is een goed idee om altijd wanneer u uw aanwijzers maakt, deze te initialiseren naar null.
Null is een speciaal sleutelwoord dat zegt dat
de aanwijzer nergens naar verwijst.
Zodra we onze beide
variabelen hebben geïnitialiseerd, onze num integer en onze num integer pointer,
willen we iets toewijzen aan onze pointer.
Omdat onze aanwijzer op dit moment niets in het geheugen wijst.
En u wilt er zeker van zijn dat wat u
uw aanwijzer daar ook aan toewijst, er daadwerkelijk een geheugenlocatie
voor heeft, geheugen toegewezen.
Dus in dit geval, als we het num gaan toewijzen,
is num een geheel getal op regel 6 waaraan geheugen is toegewezen.
C zal automatisch geheugen toewijzen voor
elke variabele declaratie.
Zelfs aan deze aanwijzer op regel 7 is geheugen toegewezen om de aanwijzer op te slaan.
Het betekent niet noodzakelijkerwijs dat er geheugen is toegewezen voor datgene waarnaar het verwijst.
Dus om pnum te ondertekenen, een waarde van een
adres, hoeven we alleen maar te zeggen dat pnum gelijk is aan
ampersand, wat het adres is van de
operator en we willen
dat het adres van num toewijzen.
Num heeft er al een geheugen voor toegewezen en we hebben het aangegeven.
Dus regel 9 wijst gewoon het adres van num toe aan een aanwijzer.
Zo simpel is het.
Als u nu een aanwijzer maakt en er
een adres aan toewijst, kunt u ook uw eigen dynamische geheugen maken en
dat toewijzen. Maar dat is voor een andere oefening. In dit geval
hebben we onze variabele al gemaakt. We gaan naar de waarde van die variabele wijzen.
We moeten het adres van num toewijzen.
Nadat we onze opdrachten hebben uitgeprint, hebben we alles geïnitialiseerd.
Nu willen we alleen wat informatie afdrukken.
Dus we gaan de printf gebruiken en ik ga eerst zeggen dat
ik de waarde van het pnum-adres wil afdrukken.
Wat nu de pnum-waarde is voor het adres,
maar het pnum-adres. En hier kunnen we eigenlijk
het adres van een
aanwijzer zeggen, dus we gaan p zeggen. En dan hoeven we alleen maar
hier het adres van onze aanwijzer in te voeren.
Dus hier zouden we zeggen adres van pnum.
En wat gaat dit ons geven, dit gaat ons het adres geven van de
aanwijzer die het geheugen toewees. Het is niet de
waarde van de waarde van de aanwijzer. De waarde van de aanwijzer wordt ook een adres, het wordt het adres van num.
Dus laten we hier eerst ook num uitprinten. Dus
hier gaan we gewoon het num-adres uitprinten.
En nogmaals, we willen een adres afdrukken, zeg procent p.
En dan gaan we het adres van
het adres van num zeggen.
En het adres van num moet ook overeenkomen met de waarde van pnum.
Het adres van pnum zal anders zijn omdat dat de aanwijzer in het geheugen is.
Dus we gaan de waarde van pnum uitprinten of
ik zou het adres van pnum moeten zeggen.
En dan
gaan we ook de waarde van de pnum uitprinten.
variabele en dit wordt ook een adres, en dit
wordt gewoon pnum.
En dan is het laatste dat we willen weergeven,
dat we willen laten zien waar de waarde van die pnum naar verwijst.
Dus de waarde van waar pnum naar verwijst.
En dit is eigenlijk het type waarnaar het
verwijst, een geheel getal. Dit zou dus procent d zijn.
En laten we wat regelfeeds toevoegen zodat we dit kunnen lezen.
En wat het eigenlijk wijst op de manier waarop u die waarde krijgt, is de indirecte-operator.
Dus je doet het sterretje en dan de naam van de aanwijzer.
En dat zal je vertellen waar de waarde naar verwijst, die 150 zou moeten zijn.
Dus om hier op regel 11 nog eens
te herhalen: we printen het adres van num.
Dat wordt een getal of een hexadecimaal getal.
Dan printen we op regel 12 het adres
van pnum, dat zojuist op regel
zeven is toegewezen omdat je de pnum-aanwijzer ergens moet opslaan.
Vervolgens printen we de waarde van de aanwijzer die alleen het adres van num is.
En wanneer we het adres van pnum afdrukken, moeten we het ampersand gebruiken.
En dan printen we de waarde uit van
waar pnum naar verwijst, met behulp van de indirectie-operator.
Dus laten we nu doorgaan en
dit bouwen en uitvoeren en we zouden al deze waarden moeten zien.
Dus het
num-adres alleen dit nummer in het geheugen is 0060FF0C.
Het adres van pnum
wordt iets anders, 0060FF08.
De waarde van pnum, het adres van num, moet overeenkomen met de eerste regel
en het doet FFOC.
En dan is de waarde van waar pnum naar verwijst 150.
Een aanwijzer kan dus echt drie waarden hebben. Het adres, de waarde
van de aanwijzer die een ander adres is
en dan de waarde van waar dat adres naar verwijst.
En nogmaals, ampersand geeft je altijd het adres
in het geheugen.
Pnum bevat een adres. U kunt dat afdrukken door gewoon
de naam van de aanwijzer te zeggen.
En om de waarde te krijgen waarnaar het verwijst, gebruik je de indirecte-operator,
de asterisk en dat geeft je die waarde die 150 is.
Dit zijn dus de basisprincipes van aanwijzers, waarmee u vertrouwd raakt met de syntaxis.
Wanneer gebruik je het adres van de operator en wanneer gebruik je de
indirecte operator en probeer je dan alleen dit concept van een aanwijzer uit te leggen en hoe een aanwijzer
een waarde van een adres bevat, de waarde van een aanwijzer is een adres.
Dus speel hiermee, begrijp
deze syntaxis, pointers zijn echt een belangrijk concept. Dank u.