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

bookOsoittimet Rakenteisiin

C-ohjelmointikieli mahdollistaa osoittimien luomisen ei ainoastaan tavallisiin tietotyyppeihin, vaan myös rakenteisiin (koska rakenne on käyttäjän määrittelemä tietotyyppi).

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

struct <name_of_struct>
{
    <field_of_struct>;
};

struct <name_of_struct>* <name_of_pointer>;

Jos <name_of_pointer> on osoitin rakenteeseen,
niin *(<name_of_pointer>) on itse rakenne.

Rakenteen kenttiin pääsee käsiksi osoittimen kautta käyttämällä ->-operaattoria.

Note
Huomio

-> on rakenteen kenttien käyttöoperaattorin . vastine

main.c

main.c

copy
12345678910111213141516171819202122
#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }

Tämä ohjelma havainnollistaa, kuinka työskennellään Point-rakenteen kanssa, joka tallentaa kaksi koordinaattia, x ja y. main-funktiossa luodaan p1-muuttuja ja sille annetaan koordinaattiarvot, minkä jälkeen alustetaan osoitin tähän rakenteeseen. Käyttämällä ->-operaattoria ohjelma käsittelee rakenteen kenttiä osoittimen kautta ja tulostaa pisteen koordinaatit näytölle.

Tehtävä

Swipe to start coding

Opiskelijalla on arvosanat 3 aineessa: matematiikka, fysiikka ja ohjelmointi.
Tehtävänäsi on laskea opiskelijan keskiarvo ja selvittää, onko hän läpäissyt kurssin.

calculateAverageAndCheck-funktion sisällä:

  1. Hae jokaisen aineen arvosana osoittimen avulla.
  2. Laske yhteen kaikki kolme arvosanaa saadaksesi kokonaistuloksen.
  3. Jaa kokonaistulos luvulla 3.0 laskeaksesi keskiarvon.
  4. Vertaa tulosta läpipääsyrajaan 60.
  5. Jos keskiarvo on suurempi tai yhtä suuri kuin 60, palauta true (opiskelija läpäisi).
  6. Muussa tapauksessa palauta false (opiskelija ei läpäissyt).

Esimerkki

MathPhysicsProgrammingAverageResult
85.055.060.066.67✅ Passed
50.040.045.045.00❌ Failed
60.060.060.060.00✅ Passed

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you show me the code example for this Point structure?

How does the `->` operator differ from the dot operator in C?

Can you explain how to initialize a pointer to a structure in more detail?

close

bookOsoittimet Rakenteisiin

Pyyhkäise näyttääksesi valikon

C-ohjelmointikieli mahdollistaa osoittimien luomisen ei ainoastaan tavallisiin tietotyyppeihin, vaan myös rakenteisiin (koska rakenne on käyttäjän määrittelemä tietotyyppi).

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

struct <name_of_struct>
{
    <field_of_struct>;
};

struct <name_of_struct>* <name_of_pointer>;

Jos <name_of_pointer> on osoitin rakenteeseen,
niin *(<name_of_pointer>) on itse rakenne.

Rakenteen kenttiin pääsee käsiksi osoittimen kautta käyttämällä ->-operaattoria.

Note
Huomio

-> on rakenteen kenttien käyttöoperaattorin . vastine

main.c

main.c

copy
12345678910111213141516171819202122
#include <stdio.h> // structure declaration struct Point { int x; int y; }; int main() { // create a structure variable of Point type struct Point p1; p1.x = 10; p1.y = 20; // create a pointer to a structure of type Point and assign it the address of variable p1 struct Point* ptr = &p1; // Access structure members via pointer by `->` operator printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y); return 0; }

Tämä ohjelma havainnollistaa, kuinka työskennellään Point-rakenteen kanssa, joka tallentaa kaksi koordinaattia, x ja y. main-funktiossa luodaan p1-muuttuja ja sille annetaan koordinaattiarvot, minkä jälkeen alustetaan osoitin tähän rakenteeseen. Käyttämällä ->-operaattoria ohjelma käsittelee rakenteen kenttiä osoittimen kautta ja tulostaa pisteen koordinaatit näytölle.

Tehtävä

Swipe to start coding

Opiskelijalla on arvosanat 3 aineessa: matematiikka, fysiikka ja ohjelmointi.
Tehtävänäsi on laskea opiskelijan keskiarvo ja selvittää, onko hän läpäissyt kurssin.

calculateAverageAndCheck-funktion sisällä:

  1. Hae jokaisen aineen arvosana osoittimen avulla.
  2. Laske yhteen kaikki kolme arvosanaa saadaksesi kokonaistuloksen.
  3. Jaa kokonaistulos luvulla 3.0 laskeaksesi keskiarvon.
  4. Vertaa tulosta läpipääsyrajaan 60.
  5. Jos keskiarvo on suurempi tai yhtä suuri kuin 60, palauta true (opiskelija läpäisi).
  6. Muussa tapauksessa palauta false (opiskelija ei läpäissyt).

Esimerkki

MathPhysicsProgrammingAverageResult
85.055.060.066.67✅ Passed
50.040.045.045.00❌ Failed
60.060.060.060.00✅ Passed

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 2
single

single

some-alt