[Powered by Google Translate] CHRIS GERBER: funktio on useita vaiheita sisällä
suurempaa ohjelmaa, joka on yleensä tarkoitettu kutsutaan
useita kertoja ja useista muista paikoista
ohjelman.
Luotaessa C funktio, yksi vaatimuksista on
Määritä paluuarvo tyyppiä.
Yksinkertaisimmassa tapauksessa on tilanne, jossa kutsuvan
koodia ei koske tulos funktion.
Tämä voi olla kyse, kun tulostat tietoja
käyttäjän näytön, kuten printf.
Tässä tapauksessa voimme julistaa paluuarvon
olevan tyyppiä void.
Käyttämällä void yksinkertaisesti kertoo kääntäjälle, että ei
arvo palautetaan.
Katsotaan mitä tämä näyttää.
>> Sanotaan, että meillä on toiminto nimeltään say_hello että
kestää yhden argumentin.
Me sitä tule henkilön nimi ja se näyttää tervehdys
näytössä.
Nimi on tyyppiä char *.
Ja me täsmentää, että väitteen.
Oma sovellus ei tarvitse tietää, mitä on painettu tai jos se
painettiin.
Joten paluuarvo on tyyppiä void.
Tämä toiminto voi tulostaa näytön komennolla kuten
printf ("Hei,% s \ n
", Nimi);.
Tervehdys näytetään ja ohjaus välitetään
takaisin kutsuvan koodin.
Yksi asia huomata on että kun paluuarvo tyyppi on mitätön,
sinun ei tarvitse sisällyttää paluun
lausuman toimintoa.
Jos haluat olla yksi, eivät sisällä paluuarvon
argumenttina.
>> Joissakin tapauksissa on järkevää palauttaa
arvo funktio.
Sanotaan, että olimme kirjallisesti toiminto nimeltään add_floats.
Me sitä tule kaksi perustelua, kellukkeet,
kutsutaan ensimmäisen ja toisen.
Ja se kertoo meille, mitä niiden summa kellukkeet on.
Tiedämme, että jos me vielä kaksi kelluu yhteen, tulos
tulee float.
Ottaen huomioon, että me valitsemme paluun tyypin float.
Tämä toiminto suorittaa tämän laskelman ja palaa
arvot selvitys kuin paluuta
ensimmäinen + toinen;.
Kun ohjaus siirtyy takaisin maatunnus,
Saatu arvo on nyt saatavilla, että koodia.
Voimme tallentaa arvo kuten niin: float tulos =
add_floats (3,14, 1,62
);.
Tulos tässä tapauksessa olisi nyt oltava arvo 4,76.
>> Koska muistutus, liukuluvuiksi ovat epätarkkoja.
Joten jos tämä oli taloudellinen laskelma käyttäen dollaria ja
senttiä, saatamme harkita tarkkaa tietotyyppi kuten
int ja suorita laskutoimitus penniä.
>> Toinen tapaus, jossa haluaisimme palata arvo
toiminto on kun haluamme tietää, jos toiminto on
onnistunut.
Jos se ei onnistunut, saatamme myös tietää millaista
virhe.
Sanotaan, että yritämme avata tiedoston levylle laskea
määrä merkkejä.
Jos tiedostoa ei voi avata, haluamme pystyä pysäyttämään ja
kertoa käyttäjälle ongelmasta.
>> Soitamme meidän tehtävämme count_file_chars ja se tulee
ottaa yhden argumentin.
Me kulkea tiedoston nimi käyttämällä
char * nimi tiedostonimi.
Tämä toiminto voi näyttää tältä.
Tässä esimerkissä odotamme määrä palasi
olla 0 tai enemmän.
Tämä jättää meidät negatiivisia kokonaislukuja ja
käyttää Sentinel arvoja.
Sentinel-arvo on yksinkertaisesti erityinen arvo, joka ei ole
oikeutettu tiedot mutta ei välittää tietoa.
Täällä, jos palaan -1 maatunnus, olen
todella lähettävät viestin, että tapahtui virhe
yrittää käyttää tiedostoa.
Voisin sitten tarkistaa, että paluuarvo onko minun
toiminto onnistuiko puhelu.
Jos numero oli 0 tai suurempi, haluaisin tietää
merkkien määrä tiedostoon.
Jos kuitenkin, määrä oli pienempi kuin 0, en voisi yksinkertaisesti
tulostaa että ongelma oli tapahtunut.
Yksi kauppa-off harkita, että varaamalla kaikki
negatiiviset arvot Sentinel arvoja olettaen, että tämä on
32-bittinen kokonaisluku, olen lähinnä ottanut pois ympärillä
2000000000 mahdollinen tuotto arvoja.
>> Return arvo tyypit ovat yksi tärkeimmistä tekijöistä
funktiokutsut.
Toivottavasti tämä lyhyt katsaus on auttanut ajattelee
kolme keskeistä tyyppiä: void, tulos-arvot ja Sentinel arvot,
ja kun kunkin kolmen saattaa olla
tarvittaessa koodi.
Kiitos katsomassa.