Osoittimet 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.
-> on rakenteen kenttien käyttöoperaattorin . vastine
main.c
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.
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ä:
- Hae jokaisen aineen arvosana osoittimen avulla.
- Laske yhteen kaikki kolme arvosanaa saadaksesi kokonaistuloksen.
- Jaa kokonaistulos luvulla
3.0laskeaksesi keskiarvon. - Vertaa tulosta läpipääsyrajaan 60.
- Jos keskiarvo on suurempi tai yhtä suuri kuin 60, palauta
true(opiskelija läpäisi). - Muussa tapauksessa palauta
false(opiskelija ei läpäissyt).
Esimerkki
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Mahtavaa!
Completion arvosana parantunut arvoon 4.35
Osoittimet 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.
-> on rakenteen kenttien käyttöoperaattorin . vastine
main.c
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.
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ä:
- Hae jokaisen aineen arvosana osoittimen avulla.
- Laske yhteen kaikki kolme arvosanaa saadaksesi kokonaistuloksen.
- Jaa kokonaistulos luvulla
3.0laskeaksesi keskiarvon. - Vertaa tulosta läpipääsyrajaan 60.
- Jos keskiarvo on suurempi tai yhtä suuri kuin 60, palauta
true(opiskelija läpäisi). - Muussa tapauksessa palauta
false(opiskelija ei läpäissyt).
Esimerkki
| Math | Physics | Programming | Average | Result |
|---|---|---|---|---|
| 85.0 | 55.0 | 60.0 | 66.67 | ✅ Passed |
| 50.0 | 40.0 | 45.0 | 45.00 | ❌ Failed |
| 60.0 | 60.0 | 60.0 | 60.00 | ✅ Passed |
Ratkaisu
Kiitos palautteestasi!
single