Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Viittaukset ja Osoitteenpurku | Osoittimet
C:n Perusteet

bookViittaukset ja Osoitteenpurku

Osoittimet perustuvat kahteen operaattoriin:

  • Osoiteoperaattori &.
  • Viittausoperaattori *.

Osoiteoperaattori

Osoiteoperaattori, jota merkitään &, mahdollistaa suoran vuorovaikutuksen tietokoneen keskusmuistin kanssa. Käyttämällä &-operaattoria saat selville objektin tarkan muistiosoitteen.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Note
Huomio

Muotoilumääre, jota käytetään osoitteiden (pointtereiden) tulostamiseen, on %p.

Osoitteet esitetään tyypillisesti heksadesimaalimuodossa.

Dereferenssioperaattori

Vastaavasti *-operaattori antaa sinulle asukkaan nimen, kun tiedät heidän osoitteensa. Kuinka voimme käyttää tätä operaattoria, jos emme käsittele osoitteita suoraan? Jos sinulla on lauseke kuten &x, joka palauttaa muuttujan x osoitteen, *-operaattorin käyttäminen siihen (*&x) antaa kyseisessä osoitteessa olevan muuttujan arvon.

Note
Huomautus

Periaatteessa *&x on sama kuin x.

Main.c

Main.c

copy
1234567891011121314
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Note
Huomautus

Älä sekoita osoitteen purku -operaattoria (*x) kertolaskuoperaattoriin (x*y).

Tehtävä

Swipe to start coding

  • Luo viiden alkion kokonaislukutaulukko ja täytä se.
  • Hae kolmannen alkion osoite.
  • Inkrementoi kolmannen alkion osoitetta ja dereferoi inkrementoitua osoitetta tulostaaksesi arvon, johon se viittaa.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 6. Luku 2
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

close

Awesome!

Completion rate improved to 2.63

bookViittaukset ja Osoitteenpurku

Pyyhkäise näyttääksesi valikon

Osoittimet perustuvat kahteen operaattoriin:

  • Osoiteoperaattori &.
  • Viittausoperaattori *.

Osoiteoperaattori

Osoiteoperaattori, jota merkitään &, mahdollistaa suoran vuorovaikutuksen tietokoneen keskusmuistin kanssa. Käyttämällä &-operaattoria saat selville objektin tarkan muistiosoitteen.

Main.c

Main.c

copy
123456789101112
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Note
Huomio

Muotoilumääre, jota käytetään osoitteiden (pointtereiden) tulostamiseen, on %p.

Osoitteet esitetään tyypillisesti heksadesimaalimuodossa.

Dereferenssioperaattori

Vastaavasti *-operaattori antaa sinulle asukkaan nimen, kun tiedät heidän osoitteensa. Kuinka voimme käyttää tätä operaattoria, jos emme käsittele osoitteita suoraan? Jos sinulla on lauseke kuten &x, joka palauttaa muuttujan x osoitteen, *-operaattorin käyttäminen siihen (*&x) antaa kyseisessä osoitteessa olevan muuttujan arvon.

Note
Huomautus

Periaatteessa *&x on sama kuin x.

Main.c

Main.c

copy
1234567891011121314
#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Note
Huomautus

Älä sekoita osoitteen purku -operaattoria (*x) kertolaskuoperaattoriin (x*y).

Tehtävä

Swipe to start coding

  • Luo viiden alkion kokonaislukutaulukko ja täytä se.
  • Hae kolmannen alkion osoite.
  • Inkrementoi kolmannen alkion osoitetta ja dereferoi inkrementoitua osoitetta tulostaaksesi arvon, johon se viittaa.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 6. Luku 2
single

single

some-alt