Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Osoittimien Lyhyt Yleiskatsaus | Osoittimien ja Rakenteiden Käsittely
C-Rakenteiden Hallinta

bookOsoittimien Lyhyt Yleiskatsaus

Viittausoperaattori

Osoitin on muuttuja, joka sisältää toisen olion osoitteen.

Viittausoperaattori "*" palauttaa osoitteessa olevan arvon.

Osoittimen määrittely ja alustaminen näyttää tältä:

int* pName = NULL;
main.c

main.c

copy
12345678
#include <stdio.h> int main() { int* pName = NULL; printf("%p\n", pName); // `%p` is a specifier for a pointer return 0; }

Osoiteoperaattori &

Operaattori & palauttaa olion osoitteen:

main.c

main.c

copy
12345678
#include <stdio.h> int main() { int variable; printf("%p\n", &variable); return 0; }

Osoitintyypin muuttujaa käytetään tallentamaan osoite, jonka &-operaattori palauttaa.

int variable;
int* pVariable;
pVariable = &variable;

Sisällön purkamiseksi annetusta osoitteesta on käytettävä *-operaattoria osoitintyyppiselle muuttujalle.

main.c

main.c

copy
12345678910
#include <stdio.h> int main() { int variable = 1024; int* pVariable = &variable; printf("Address: %p\n", pVariable); // `%p` specifier for a pointer printf("Returned value by address: %d\n", *(pVariable)); // using `*` to pointer return 0; }
Tehtävä

Swipe to start coding

Sinulla on tuote, jolla on tietty hinta, ja sinun tulee kasvattaa sen arvoa annetulla prosenttiosuudella.
Tehtävänäsi on toteuttaa funktio, joka päivittää tuotteen hinnan käyttäen osoitinta.

updatePrice-funktion sisällä:

  1. Käytä dereferenssioperaattoria (*) päästäksesi käsiksi muistissa olevaan arvoon — esimerkiksi *price viittaa arvoon 100.0.
  2. Laske nykyisen hinnan prosenttiosuus*price * percentIncrease / 100.0, mikä 10 %:lle arvosta 100.0 on 10.0.
  3. Lisää tämä prosenttiosuus alkuperäiseen arvoon saadaksesi päivitetyn hinnan*price = *price + (percentage part).
  4. Funktio ei palauta mitään — se muokkaa arvoa suoraan osoittimen kautta.

Example

Initial PriceIncrease (%)Updated Price
100.010.0110.0
250.05.0262.5
80.025.0100.0

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain the difference between the * and & operators in more detail?

Can you give an example of how to use pointers in a function?

What are some common mistakes when working with pointers?

close

bookOsoittimien Lyhyt Yleiskatsaus

Pyyhkäise näyttääksesi valikon

Viittausoperaattori

Osoitin on muuttuja, joka sisältää toisen olion osoitteen.

Viittausoperaattori "*" palauttaa osoitteessa olevan arvon.

Osoittimen määrittely ja alustaminen näyttää tältä:

int* pName = NULL;
main.c

main.c

copy
12345678
#include <stdio.h> int main() { int* pName = NULL; printf("%p\n", pName); // `%p` is a specifier for a pointer return 0; }

Osoiteoperaattori &

Operaattori & palauttaa olion osoitteen:

main.c

main.c

copy
12345678
#include <stdio.h> int main() { int variable; printf("%p\n", &variable); return 0; }

Osoitintyypin muuttujaa käytetään tallentamaan osoite, jonka &-operaattori palauttaa.

int variable;
int* pVariable;
pVariable = &variable;

Sisällön purkamiseksi annetusta osoitteesta on käytettävä *-operaattoria osoitintyyppiselle muuttujalle.

main.c

main.c

copy
12345678910
#include <stdio.h> int main() { int variable = 1024; int* pVariable = &variable; printf("Address: %p\n", pVariable); // `%p` specifier for a pointer printf("Returned value by address: %d\n", *(pVariable)); // using `*` to pointer return 0; }
Tehtävä

Swipe to start coding

Sinulla on tuote, jolla on tietty hinta, ja sinun tulee kasvattaa sen arvoa annetulla prosenttiosuudella.
Tehtävänäsi on toteuttaa funktio, joka päivittää tuotteen hinnan käyttäen osoitinta.

updatePrice-funktion sisällä:

  1. Käytä dereferenssioperaattoria (*) päästäksesi käsiksi muistissa olevaan arvoon — esimerkiksi *price viittaa arvoon 100.0.
  2. Laske nykyisen hinnan prosenttiosuus*price * percentIncrease / 100.0, mikä 10 %:lle arvosta 100.0 on 10.0.
  3. Lisää tämä prosenttiosuus alkuperäiseen arvoon saadaksesi päivitetyn hinnan*price = *price + (percentage part).
  4. Funktio ei palauta mitään — se muokkaa arvoa suoraan osoittimen kautta.

Example

Initial PriceIncrease (%)Updated Price
100.010.0110.0
250.05.0262.5
80.025.0100.0

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 2. Luku 1
single

single

some-alt