Zig Academy · Oppitunti

Viittauksen purkaminen ptr.*-syntaksilla

Lukekaa ja kirjoittakaa osoittimen kautta.

Oppitunti 2/413 vaihetta

Viittauksen purkaminen ptr.*-syntaksilla on ilmainen Zig Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Arvon saavuttaminen

Osoitin sisältää osoitteen, ei arvoa. Osoittimen takana olevan arvon käyttämiseksi osoitin on ensin dereferoitava.

Syntaksi .*

Zig dereferoi osoittimen sen perään kirjoitettavalla .*-merkinnällä. Siksi ptr.* tarkoittaa arvoa, johon ptr tällä hetkellä osoittaa.

var x: i32 = 7;
const p = &x;
const v = p.*;

Lukeminen osoittimen kautta

Kun kirjoitatte lausekkeeseen ptr.*, luette osoittimen kohdearvon ja saatte tavallisen kopion, jota voitte käyttää missä tahansa.

const doubled = p.* * 2;

Kirjoittaminen osoittimen kautta

Sijoittakaa ptr.* sijoituslauseen vasemmalle puolelle, jos haluatte kirjoittaa uuden arvon alkuperäiseen muistipaikkaan.

p.* = 99;

Muutokset näkyvät

Koska osoitin jakaa alkuperäisen tallennustilan, sen kautta kirjoittaminen päivittää myös muuttujan, jonka muut näkevät.

var x: i32 = 1;
const p = &x;
p.* = 5;
// x is now 5

Nuolioperaattoria ei ole

Zigissä ei ole C:n kaltaista ->-operaattoria. Luettepa kentän tai kirjoitatte siihen, käytätte aina samaa .*-dereferointia.

Dereferointi ja sitten kenttä

Struct-rakenteeseen osoittavan osoittimen kanssa p.field toimii suoraan: Zig dereferoi automaattisesti kenttää käytettäessä, joten .* jää pois.

const p = &point;
const y = p.y;

Eksplisiittinen muoto on sallittu

Voitte silti kirjoittaa muodon p.*.field, mutta lyhyempi p.field on Zigissä idiomattinen ja selkeämpi.

const estää kirjoittamisen

Jos osoitin on tyyppiä *const T, ptr.* on vain luettavissa. Sen kautta yrittäminen aiheuttaa käännösvirheen.

const x: i32 = 3;
const p = &x;
// p.* = 4; // error

Dereferointi laskutoimituksissa

Voitte käyttää ptr.*-merkintää missä tahansa, johon arvo sopii, myös laskutoimituksissa. Siksi p.* + 1 tarkoittaa yksinkertaisesti kohdearvoa plus yhtä.

const next = p.* + 1;

Yleinen virhe

.*-merkinnän unohtaminen yrittää käyttää osoitetta lukuna, mikä on tyyppivirhe. Zig havaitsee sen käännösaikana, ei suorituksen aikana.

Pikakoe

Teillä on const p = &x ja haluatte tallentaa uuden luvun x:ään p:n kautta. Mitä kirjoitatte?

Kertaus

Käyttäkää ptr.*-merkintää osoittimen kohdearvon lukemiseen tai kirjoittamiseen. Struct-kentät dereferoidaan automaattisesti, ja *const T -osoittimet pysyvät vain luettavina. 🎯

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 ”Viittauksen purkaminen ptr.*-syntaksilla” ilmainen?

Kyllä – oppitunnin ”Viittauksen purkaminen ptr.*-syntaksilla” 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 ”Viittauksen purkaminen ptr.*-syntaksilla”?

Lukekaa ja kirjoittakaa osoittimen kautta. 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 2/4.

Kuinka kauan ”Viittauksen purkaminen ptr.*-syntaksilla”-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