1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: funktio on useita vaiheita sisällä 2 00:00:09,540 --> 00:00:12,000 suurempaa ohjelmaa, joka on yleensä tarkoitettu kutsutaan 3 00:00:12,000 --> 00:00:14,440 useita kertoja ja useista muista paikoista 4 00:00:14,440 --> 00:00:15,720 ohjelman. 5 00:00:15,720 --> 00:00:18,480 Luotaessa C funktio, yksi vaatimuksista on 6 00:00:18,480 --> 00:00:21,050 Määritä paluuarvo tyyppiä. 7 00:00:21,050 --> 00:00:23,490 Yksinkertaisimmassa tapauksessa on tilanne, jossa kutsuvan 8 00:00:23,490 --> 00:00:26,510 koodia ei koske tulos funktion. 9 00:00:26,510 --> 00:00:28,530 Tämä voi olla kyse, kun tulostat tietoja 10 00:00:28,530 --> 00:00:31,120 käyttäjän näytön, kuten printf. 11 00:00:31,120 --> 00:00:33,140 Tässä tapauksessa voimme julistaa paluuarvon 12 00:00:33,140 --> 00:00:35,020 olevan tyyppiä void. 13 00:00:35,020 --> 00:00:37,130 Käyttämällä void yksinkertaisesti kertoo kääntäjälle, että ei 14 00:00:37,130 --> 00:00:39,120 arvo palautetaan. 15 00:00:39,120 --> 00:00:40,530 Katsotaan mitä tämä näyttää. 16 00:00:40,530 --> 00:00:42,940 >> Sanotaan, että meillä on toiminto nimeltään say_hello että 17 00:00:42,940 --> 00:00:44,490 kestää yhden argumentin. 18 00:00:44,490 --> 00:00:47,050 Me sitä tule henkilön nimi ja se näyttää tervehdys 19 00:00:47,050 --> 00:00:48,380 näytössä. 20 00:00:48,380 --> 00:00:50,505 Nimi on tyyppiä char *. 21 00:00:50,505 --> 00:00:53,080 Ja me täsmentää, että väitteen. 22 00:00:53,080 --> 00:00:55,970 Oma sovellus ei tarvitse tietää, mitä on painettu tai jos se 23 00:00:55,970 --> 00:00:56,970 painettiin. 24 00:00:56,970 --> 00:00:59,680 Joten paluuarvo on tyyppiä void. 25 00:00:59,680 --> 00:01:02,060 Tämä toiminto voi tulostaa näytön komennolla kuten 26 00:01:02,060 --> 00:01:07,620 printf ("Hei,% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Nimi);. 28 00:01:12,100 --> 00:01:14,690 Tervehdys näytetään ja ohjaus välitetään 29 00:01:14,690 --> 00:01:16,260 takaisin kutsuvan koodin. 30 00:01:16,260 --> 00:01:19,370 Yksi asia huomata on että kun paluuarvo tyyppi on mitätön, 31 00:01:19,370 --> 00:01:20,790 sinun ei tarvitse sisällyttää paluun 32 00:01:20,790 --> 00:01:22,300 lausuman toimintoa. 33 00:01:22,300 --> 00:01:25,270 Jos haluat olla yksi, eivät sisällä paluuarvon 34 00:01:25,270 --> 00:01:27,420 argumenttina. 35 00:01:27,420 --> 00:01:29,380 >> Joissakin tapauksissa on järkevää palauttaa 36 00:01:29,380 --> 00:01:30,570 arvo funktio. 37 00:01:30,570 --> 00:01:33,900 Sanotaan, että olimme kirjallisesti toiminto nimeltään add_floats. 38 00:01:33,900 --> 00:01:36,160 Me sitä tule kaksi perustelua, kellukkeet, 39 00:01:36,160 --> 00:01:37,510 kutsutaan ensimmäisen ja toisen. 40 00:01:37,510 --> 00:01:40,520 Ja se kertoo meille, mitä niiden summa kellukkeet on. 41 00:01:40,520 --> 00:01:43,000 Tiedämme, että jos me vielä kaksi kelluu yhteen, tulos 42 00:01:43,000 --> 00:01:44,120 tulee float. 43 00:01:44,120 --> 00:01:47,540 Ottaen huomioon, että me valitsemme paluun tyypin float. 44 00:01:47,540 --> 00:01:50,040 Tämä toiminto suorittaa tämän laskelman ja palaa 45 00:01:50,040 --> 00:01:52,260 arvot selvitys kuin paluuta 46 00:01:52,260 --> 00:01:54,770 ensimmäinen + toinen;. 47 00:01:54,770 --> 00:01:57,300 Kun ohjaus siirtyy takaisin maatunnus, 48 00:01:57,300 --> 00:02:00,030 Saatu arvo on nyt saatavilla, että koodia. 49 00:02:00,030 --> 00:02:04,250 Voimme tallentaa arvo kuten niin: float tulos = 50 00:02:04,250 --> 00:02:09,410 add_floats (3,14, 1,62 51 00:02:09,410 --> 00:02:11,290 );. 52 00:02:11,290 --> 00:02:15,200 Tulos tässä tapauksessa olisi nyt oltava arvo 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Koska muistutus, liukuluvuiksi ovat epätarkkoja. 54 00:02:18,620 --> 00:02:21,250 Joten jos tämä oli taloudellinen laskelma käyttäen dollaria ja 55 00:02:21,250 --> 00:02:24,960 senttiä, saatamme harkita tarkkaa tietotyyppi kuten 56 00:02:24,960 --> 00:02:29,120 int ja suorita laskutoimitus penniä. 57 00:02:29,120 --> 00:02:31,270 >> Toinen tapaus, jossa haluaisimme palata arvo 58 00:02:31,270 --> 00:02:33,980 toiminto on kun haluamme tietää, jos toiminto on 59 00:02:33,980 --> 00:02:35,960 onnistunut. 60 00:02:35,960 --> 00:02:39,190 Jos se ei onnistunut, saatamme myös tietää millaista 61 00:02:39,190 --> 00:02:41,250 virhe. 62 00:02:41,250 --> 00:02:43,647 Sanotaan, että yritämme avata tiedoston levylle laskea 63 00:02:43,647 --> 00:02:45,220 määrä merkkejä. 64 00:02:45,220 --> 00:02:48,635 Jos tiedostoa ei voi avata, haluamme pystyä pysäyttämään ja 65 00:02:48,635 --> 00:02:50,910 kertoa käyttäjälle ongelmasta. 66 00:02:50,910 --> 00:02:54,070 >> Soitamme meidän tehtävämme count_file_chars ja se tulee 67 00:02:54,070 --> 00:02:55,490 ottaa yhden argumentin. 68 00:02:55,490 --> 00:02:57,420 Me kulkea tiedoston nimi käyttämällä 69 00:02:57,420 --> 00:02:59,610 char * nimi tiedostonimi. 70 00:02:59,610 --> 00:03:03,050 Tämä toiminto voi näyttää tältä. 71 00:03:03,050 --> 00:03:05,450 Tässä esimerkissä odotamme määrä palasi 72 00:03:05,450 --> 00:03:07,130 olla 0 tai enemmän. 73 00:03:07,130 --> 00:03:08,870 Tämä jättää meidät negatiivisia kokonaislukuja ja 74 00:03:08,870 --> 00:03:10,200 käyttää Sentinel arvoja. 75 00:03:10,200 --> 00:03:13,320 Sentinel-arvo on yksinkertaisesti erityinen arvo, joka ei ole 76 00:03:13,320 --> 00:03:16,200 oikeutettu tiedot mutta ei välittää tietoa. 77 00:03:16,200 --> 00:03:19,480 Täällä, jos palaan -1 maatunnus, olen 78 00:03:19,480 --> 00:03:21,830 todella lähettävät viestin, että tapahtui virhe 79 00:03:21,830 --> 00:03:23,810 yrittää käyttää tiedostoa. 80 00:03:23,810 --> 00:03:26,060 Voisin sitten tarkistaa, että paluuarvo onko minun 81 00:03:26,060 --> 00:03:28,060 toiminto onnistuiko puhelu. 82 00:03:28,060 --> 00:03:30,350 Jos numero oli 0 tai suurempi, haluaisin tietää 83 00:03:30,350 --> 00:03:32,180 merkkien määrä tiedostoon. 84 00:03:32,180 --> 00:03:35,310 Jos kuitenkin, määrä oli pienempi kuin 0, en voisi yksinkertaisesti 85 00:03:35,310 --> 00:03:37,350 tulostaa että ongelma oli tapahtunut. 86 00:03:37,350 --> 00:03:40,120 Yksi kauppa-off harkita, että varaamalla kaikki 87 00:03:40,120 --> 00:03:43,180 negatiiviset arvot Sentinel arvoja olettaen, että tämä on 88 00:03:43,180 --> 00:03:46,070 32-bittinen kokonaisluku, olen lähinnä ottanut pois ympärillä 89 00:03:46,070 --> 00:03:48,970 2000000000 mahdollinen tuotto arvoja. 90 00:03:48,970 --> 00:03:51,270 >> Return arvo tyypit ovat yksi tärkeimmistä tekijöistä 91 00:03:51,270 --> 00:03:52,460 funktiokutsut. 92 00:03:52,460 --> 00:03:54,670 Toivottavasti tämä lyhyt katsaus on auttanut ajattelee 93 00:03:54,670 --> 00:03:59,110 kolme keskeistä tyyppiä: void, tulos-arvot ja Sentinel arvot, 94 00:03:59,110 --> 00:04:00,190 ja kun kunkin kolmen saattaa olla 95 00:04:00,190 --> 00:04:02,010 tarvittaessa koodi. 96 00:04:02,010 --> 00:04:03,260 Kiitos katsomassa.