...
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.
...