Osoittimien 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
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
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
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; }
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ä:
- Käytä dereferenssioperaattoria (
*) päästäksesi käsiksi muistissa olevaan arvoon — esimerkiksi*priceviittaa arvoon100.0. - Laske nykyisen hinnan prosenttiosuus —
*price * percentIncrease / 100.0, mikä 10 %:lle arvosta 100.0 on10.0. - Lisää tämä prosenttiosuus alkuperäiseen arvoon saadaksesi päivitetyn hinnan —
*price = *price + (percentage part). - Funktio ei palauta mitään — se muokkaa arvoa suoraan osoittimen kautta.
Example
| Initial Price | Increase (%) | Updated Price |
|---|---|---|
| 100.0 | 10.0 | 110.0 |
| 250.0 | 5.0 | 262.5 |
| 80.0 | 25.0 | 100.0 |
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Mahtavaa!
Completion arvosana parantunut arvoon 4.35
Osoittimien 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
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
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
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; }
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ä:
- Käytä dereferenssioperaattoria (
*) päästäksesi käsiksi muistissa olevaan arvoon — esimerkiksi*priceviittaa arvoon100.0. - Laske nykyisen hinnan prosenttiosuus —
*price * percentIncrease / 100.0, mikä 10 %:lle arvosta 100.0 on10.0. - Lisää tämä prosenttiosuus alkuperäiseen arvoon saadaksesi päivitetyn hinnan —
*price = *price + (percentage part). - Funktio ei palauta mitään — se muokkaa arvoa suoraan osoittimen kautta.
Example
| Initial Price | Increase (%) | Updated Price |
|---|---|---|
| 100.0 | 10.0 | 110.0 |
| 250.0 | 5.0 | 262.5 |
| 80.0 | 25.0 | 100.0 |
Ratkaisu
Kiitos palautteestasi!
single