Vakiotyyppiset osoittimet ja kohdistus
Ilmaiskaa vain luku -käyttö ja muistiasettelu.
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 u8Muuttuva 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. 🎯
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
- Yhden alkion osoittimet *T-tyypillä
- Viittauksen purkaminen ptr.*-syntaksilla
- Monen alkion osoittimet [*]T
- Vakiotyyppiset osoittimet ja kohdistus