Zig Academy · Oppitunti

Vakiotyyppiset osoittimet ja kohdistus

Ilmaiskaa vain luku -käyttö ja muistiasettelu.

Oppitunti 4/413 vaihetta

Vakiotyyppiset osoittimet ja kohdistus on ilmainen Zig Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Zig Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Zig Academy-kurssilla on yhteensä 4 oppituntia.

Vain luku -käyttö

Usein haluatte jakaa arvon mutta luvata, ettette muuta sitä. const-osoitin sallii lukemisen ja estää kirjoittamisen.

Tyyppi *const T

Muuttumattomaan dataan osoittava osoitin kirjoitetaan muodossa *const T. Voitte lukea sen kautta, mutta sen kohteen muuttaminen aiheuttaa käännösvirheen.

const x: i32 = 5;
const p: *const i32 = &x;

Const kulkee &-merkin mukana

Const-arvon osoitteen ottaminen tuottaa automaattisesti arvon *const T, joten muuttumattomuus säilyy tyypissä.

const v: u8 = 9;
const p = &v; // *const u8

Muuttuva muunnetaan const-tyypiksi

*T voidaan muuntaa suoraan tyypiksi *const T, koska kirjoitusoikeuden poistaminen on aina turvallista. Käänteinen muunnos ei ole sallittu.

var n: i32 = 1;
const ro: *const i32 = &n;

Miksi const kannattaa valita

*const T -parametrin hyväksyminen kertoo kutsujille, että luette arvoa vain, mikä tekee funktioista helpommin luotettavia.

fn show(p: *const i32) void {
    // read only
}

Mitä kohdistus tarkoittaa

Jokaisella tyypillä on kohdistus: muistiosoitteen raja, jonka kohdalle sen on sijoituttava. u32 tarvitsee yleensä osoitteen, joka on jaollinen neljällä.

Kohdistuksen kysely @alignOf-arvolla

Sisäänrakennettu @alignOf(T) palauttaa tyypin tarvitseman kohdistuksen tavuina, aivan kuten @sizeOf palauttaa sen koon.

const a = @alignOf(u32);

Kohdistus tyypissä

Osoittimen kohdistuksen voi määrittää sen tyypissä käyttämällä sanaa align, kuten muodossa *align(4) u8, jolloin vaaditaan tietty muistiosoiteraja.

var p: *align(4) u8 = undefined;

Miksi kohdistus on tärkeää

Laitteisto lukee kohdistettua dataa nopeammin, ja jotkin suorittimet aiheuttavat poikkeuksen kohdistamattomasta käytöstä. Zig seuraa kohdistusta tyypissä, jotta toiminta pysyy oikeana.

Liian vahva ja liian heikko kohdistus

Osoitin voi luvata oletusta vahvemman kohdistuksen, mutta sitä ei voi heikentää ilman eksplisiittistä muunnosta, kuten @alignCast.

Const ja align yhdessä

Nämä kaksi ominaisuutta yhdistyvät luontevasti: *const align(8) T on vain luku -osoitin, joka takaa lisäksi kahdeksan tavun rajan.

Pikatarkistus

Kirjoitatte funktion, jonka tarvitsee vain lukea osoittimen takana oleva arvo. Mikä parametrityyppi ilmaisee tämän parhaiten?

Kertaus

*const T -osoitin jakaa dataa vain luettavaksi ja voidaan muuntaa tyypistä *T, kun taas @alignOf:n ja align(n):n avulla määritetty kohdistus pitää muistinkäytön oikeana ja nopeana. 🎯

Aloita maksutta

Opi Zig tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Vakiotyyppiset osoittimet ja kohdistus” ilmainen?

Kyllä – oppitunnin ”Vakiotyyppiset osoittimet ja kohdistus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Zig Academy-kurssin, päivitä CoddyKit PROhon. Zig Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Vakiotyyppiset osoittimet ja kohdistus”?

Ilmaiskaa vain luku -käyttö ja muistiasettelu. Harjoittelet Zig Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Zig Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Zig Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Vakiotyyppiset osoittimet ja kohdistus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Zig Academy-oppitunnilla?

Kyllä. Jokainen Zig Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Yhden alkion osoittimet *T-tyypillä
  2. Viittauksen purkaminen ptr.*-syntaksilla
  3. Monen alkion osoittimet [*]T
  4. Vakiotyyppiset osoittimet ja kohdistus
← Takaisin: Zig Academy