Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Edellinen ohjelma laskee kartion tilavuuden ja tulostaa tiedot ruudulle, muttei pysty välittämään tietoa muille funktioille. Muuttujat Sade, Korkeus ja Tilavuus ovat tämän funktion muuttujia eli tiedon säilömispaikkoja.

Funktion kutsuminen

Funktiota kutsutaan muodossa funktion_nimi() ja sulkujen sisään tulevat mahdolliset parametrit.

Esim funktion kutsuminen pääohjelmasta:

Code Block
int main()              // pääohjelma
{
    KartionTilavuus();  // funktion kutsu
    getch();            // jäädään odottamaan, että käyttäjä painaa jotain nappulaa
}

...

Edellä oleva funktio ottaa parametreikseen kaksi kokonaislukua ja sijoittaa ne funktion paikallisiin muuttujiin Eka ja Toka. Funktion laskema tulos näytetään ruudulla. Tämä funktio ei palauta mitään tietoa kutsujalle.

...

Code Block
void LaskeYhteen(int Eka, int Toka, int *Summa)
{
    *Summa = Eka + Toka;               // * summan edessä aiheuttaa sen ettei osiotteen arvoa muuteta, vaan osoittimen osoittaman muistipaikan sisältö
}

void main()                            // pääohjelma
{
    int First=5, Second=8, Sum=0;

    LaskeYhteen(First, Second, &Sum);  // välitetään yhteenlaskettavat arvoparametreina ja summa osoiteparametrina,
                                       // jotta summa saadan muutettua nollasta haluttuun arvoon kutsuttavassa funktiossa
    printf("\nsumma on %d", Sum);
    getch();
}

Edellä kuvattu menetelmä vaatii jo hieman huolellisuutta. Koska funktion parametrit esitellään nyt muuttujina. Aina kun tyypin ja muuttujan nimen edessä välissä on * merkki, tämä tarkoittaa, että muuttuja on osoite. Taas * pelkän muuttujan nimen edessä merkitsee siirtymistä muuttujan osoitteesta muuttujan sisältöön. * voi tiestysti tietysti myös tarkoittaa pelkkää kertomista, onneksi kääntäjä osaa päätellä tämän.

...