Hallo, en welkom terug.
Ik wil het in deze lezing een beetje hebben over void pointers.
We weten wat void is omdat we dit trefwoord hebben
gebruikt toen we het over functies hadden.
Vooral als we geen gegevens van een functie willen retourneren, gebruiken we
de void als onderdeel van de functiehandtekening. Hoe zit het als we de aanwijzer vermijden, wat betekent dit?
Welnu, de typenaam ongeldig betekent afwezigheid van elk type.
Dus een aanwijzer van het type void star kan het adres van een data-item van elk type
bevatten, dus het heeft veel flexibiliteit.
Als je niet weet wat je als aanwijzer gaat opslaan, kun je
lege ster zeggen, best handig. Het wordt meestal gebruikt in functies voor functieparameters.
Dus void star wordt vaak gebruikt als een parametertype of
een retourtype met
functies, die op een typeonafhankelijke manier met gegevens omgaan.
U kunt uw functie dus flexibeler laten zijn als
er lege steraanwijzers nodig zijn.
Het betekent in feite dat je functie meer dan
één type variabele kan hebben, behalve dat het niet volledig flexibel
is omdat je het op de een of andere manier moet casten als je er geen referentie meer over hebt.
Dus elke soort aanwijzer kan worden doorgegeven als een waarde van het type void, elk type.
De lege aanwijzer weet niet naar welk type object hij verwijst.
Je kunt er dus niet direct
van afwijken, en daar komt de echte hik samen met de lege ster.
Het is geweldig voor lange flexibiliteit voor verschillende gegevenstypen, maar u kunt het
alleen gebruiken als u het gegevenstype kent.
U moet dus een expliciete cast
aan de aanwijzer geven wanneer u deze verwijt.
Het adres van een variabele van het type int kan worden opgeslagen in een
pointervariabele van het type void, omdat void star betekent dat elk type gegevens daarbinnen kan worden opgeslagen.
Dus als u toegang wilt tot de intervalwaarde op het adres
dat is opgeslagen in de lege steraanwijzer, moet u deze eerst casten naar een aanwijzer
van het type int.
In dit voorbeeld gaan we zien hoe je de lege steraanwijzer gebruikt.
We hebben drie variabelen gedefinieerd, een integer en een float en een karakter.
We gaan nu een lege steraanwijzer maken.
Omdat de aanwijzer van het type void is, kunnen we hem het adres van
i toewijzen, wat een int is. We kunnen het het adres
van f toewijzen, wat een float is, en we kunnen het het adres van
karakter of ch toewijzen dat een karakter is.
Het enige probleem is dat wanneer je derefereert, je dat type moet kennen, maar je ziet hier nog steeds het voordeel.
Het voordeel hiervan is dat we maar één type variabele hoeven te maken
en dat we er meerdere verschillende adressen in kunnen opslaan.
Maar wanneer je het wilt gebruiken, moet je dat in star gebruiken.
En je zult hier zien wanneer we de gegevens afdrukken, dat
de in-ster de aanwijzer werpt en dan de-referentie verwijderen, de ster buiten de
tussen haakjes de-referentie. Dus dat gaat de waarde
afdrukken waar de v-aanwijzer naar verwijst,
maar eerst gaat het naar het juiste type.
Dus in alle drie deze v-aanwijzers, zal het voor de mier worden afgedrukt, het gaat er 10 uitprinten.
Voor de vlotter zal het er 2 uitbrengen. 34.
En voor de ch, char, wordt k afgedrukt.
We zullen zien dat de void-aanwijzer meer wordt gebruikt in
functieparameters, zoals ik al zei, in retourtypen.
En dat is echt de waarde als het gaat om het alleen
gebruiken van een lege steraanwijzer in één verklaring
en het toewijzen van veel verschillende gegevenstypen. Dank u.