1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: funkcija je niz korakov v 2 00:00:09,540 --> 00:00:12,000 večji program, ki je običajno namenjen, da se imenuje 3 00:00:12,000 --> 00:00:14,440 večkrat in iz različnih drugih lokacijah, 4 00:00:14,440 --> 00:00:15,720 program. 5 00:00:15,720 --> 00:00:18,480 Pri ustvarjanju funkcijo C, ena od zahtev je 6 00:00:18,480 --> 00:00:21,050 Določite vrsto vrnjene vrednosti. 7 00:00:21,050 --> 00:00:23,490 Najenostavnejši primer je stanje, v katerem pozivajo 8 00:00:23,490 --> 00:00:26,510 Oznaka se ne ukvarja z rezultatom funkcije. 9 00:00:26,510 --> 00:00:28,530 To bi se lahko zgodilo, ko smo se tiskanje podatke v 10 00:00:28,530 --> 00:00:31,120 uporabnikov zaslon, kot pri printf. 11 00:00:31,120 --> 00:00:33,140 V tem primeru lahko razglasi vrnjeno vrednost 12 00:00:33,140 --> 00:00:35,020 da so nična tipa. 13 00:00:35,020 --> 00:00:37,130 S praznino preprosto pove prevajalniku, da ni 14 00:00:37,130 --> 00:00:39,120 vrednost se bo vrnil. 15 00:00:39,120 --> 00:00:40,530 Pa poglejmo, kako izgleda. 16 00:00:40,530 --> 00:00:42,940 >> Recimo, da imamo funkcijo imenovano say_hello, da 17 00:00:42,940 --> 00:00:44,490 vzame en argument. 18 00:00:44,490 --> 00:00:47,050 Bomo dajati ime osebe in ga bo prikazal pozdrav 19 00:00:47,050 --> 00:00:48,380 na zaslonu. 20 00:00:48,380 --> 00:00:50,505 Ime bo tipa char *. 21 00:00:50,505 --> 00:00:53,080 In bomo določili, da argument. 22 00:00:53,080 --> 00:00:55,970 Moja vloga ni treba vedeti, kaj je bila natisnjena ali če ga 23 00:00:55,970 --> 00:00:56,970 je bila natisnjena. 24 00:00:56,970 --> 00:00:59,680 Tako bo vrnitev vrednost praznine tipa. 25 00:00:59,680 --> 00:01:02,060 Ta funkcija lahko natisnete na zaslon z ukazom, kot 26 00:01:02,060 --> 00:01:07,620 printf ("Pozdravljen% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Ime);. 28 00:01:12,100 --> 00:01:14,690 Pozdravu se prikaže in nadzora, ne bo posredovana 29 00:01:14,690 --> 00:01:16,260 Nazaj na klicne kode. 30 00:01:16,260 --> 00:01:19,370 Ena stvar je tudi omeniti, da je, ko je vrnjena vrednost tipa void, 31 00:01:19,370 --> 00:01:20,790 vam ni treba, da vključujejo tudi donosnost 32 00:01:20,790 --> 00:01:22,300 Izjava v funkciji. 33 00:01:22,300 --> 00:01:25,270 Če se odločite, da vključuje eno, ne vključujejo vrnjeno vrednost 34 00:01:25,270 --> 00:01:27,420 kot argument. 35 00:01:27,420 --> 00:01:29,380 >> V nekaterih primerih je smiselno, da se vrnete 36 00:01:29,380 --> 00:01:30,570 vrednost od funkcije. 37 00:01:30,570 --> 00:01:33,900 Recimo, da smo napisali funkcijo imenovano add_floats. 38 00:01:33,900 --> 00:01:36,160 Bomo dajati dva argumenta, tako boje, 39 00:01:36,160 --> 00:01:37,510 imenovan prvi in ​​drugi. 40 00:01:37,510 --> 00:01:40,520 In to nam pove, kolikšen znesek teh splavov je. 41 00:01:40,520 --> 00:01:43,000 Vemo, da če bomo dodali 2 boje skupaj, rezultat 42 00:01:43,000 --> 00:01:44,120 bo drsenje. 43 00:01:44,120 --> 00:01:47,540 Glede na to, da smo se odločili za vrnitev tip float. 44 00:01:47,540 --> 00:01:50,040 Ta funkcija bo ta izračun, in se vrnete 45 00:01:50,040 --> 00:01:52,260 vrednosti v izjavi, kot so vračanje 46 00:01:52,260 --> 00:01:54,770 1. + 2.;. 47 00:01:54,770 --> 00:01:57,300 Ko se nadzor prenese nazaj kliče kodo, 48 00:01:57,300 --> 00:02:00,030 posledica vrednost je zdaj na voljo v tem zakoniku. 49 00:02:00,030 --> 00:02:04,250 Mi lahko shranite to vrednost, kot so: float rezultat = 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 Rezultat v tem primeru bi se zdaj vsebuje vrednost 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Naj vas spomnimo, s plavajočo vejico, netočni. 54 00:02:18,620 --> 00:02:21,250 Torej, če je to obračun z uporabo dolarjev in 55 00:02:21,250 --> 00:02:24,960 centov, lahko razmislite natančno vrste podatkov, kot so 56 00:02:24,960 --> 00:02:29,120 int in opraviti izračun v penijev. 57 00:02:29,120 --> 00:02:31,270 >> Še en primer, kjer bi se želeli vrniti vrednost iz 58 00:02:31,270 --> 00:02:33,980 funkcija je, ko smo želeli vedeti, če je funkcija 59 00:02:33,980 --> 00:02:35,960 uspešna. 60 00:02:35,960 --> 00:02:39,190 Če ne bi bilo uspešno, lahko prav tako želeli vedeti, kakšne vrste 61 00:02:39,190 --> 00:02:41,250 Prišlo je do napake. 62 00:02:41,250 --> 00:02:43,647 Recimo, da smo poskušali odpreti datoteko na disku za štetje 63 00:02:43,647 --> 00:02:45,220 število znakov v njej. 64 00:02:45,220 --> 00:02:48,635 Če datoteka ni mogoče odpreti, želimo, da bi lahko ustavili in 65 00:02:48,635 --> 00:02:50,910 povedal si o težavi. 66 00:02:50,910 --> 00:02:54,070 >> Poklicali bomo naše funkcije count_file_chars in bo 67 00:02:54,070 --> 00:02:55,490 sprejme en argument. 68 00:02:55,490 --> 00:02:57,420 Bomo prehaja v ime datoteke z uporabo 69 00:02:57,420 --> 00:02:59,610 char * imenovane datoteke. 70 00:02:59,610 --> 00:03:03,050 Ta funkcija bi izgledal nekako takole. 71 00:03:03,050 --> 00:03:05,450 V tem primeru bi pričakujemo, da bo število vrne 72 00:03:05,450 --> 00:03:07,130 biti 0 ali več. 73 00:03:07,130 --> 00:03:08,870 To daje nam negativnih števil v 74 00:03:08,870 --> 00:03:10,200 uporablja kot kontrolne vrednosti. 75 00:03:10,200 --> 00:03:13,320 Sentinel vrednost je le posebna vrednota, ki je ni 76 00:03:13,320 --> 00:03:16,200 legitimna, vendar pa podatki posredujejo informacije. 77 00:03:16,200 --> 00:03:19,480 Tukaj, če se vrnem -1 za klicno kodo, sem 78 00:03:19,480 --> 00:03:21,830 dejansko pošilja sporočilo, da je prišlo do napake 79 00:03:21,830 --> 00:03:23,810 poskuša dostopati do datoteke. 80 00:03:23,810 --> 00:03:26,060 Lahko pa preverite, ali vrnjeno vrednost ugotoviti, če moj 81 00:03:26,060 --> 00:03:28,060 klic funkcije je bil uspešen. 82 00:03:28,060 --> 00:03:30,350 Če je bila številka 0 ali več, bi vedel, da 83 00:03:30,350 --> 00:03:32,180 število znakov v datoteki. 84 00:03:32,180 --> 00:03:35,310 Če pa je bilo število manjše od 0, bi lahko preprosto 85 00:03:35,310 --> 00:03:37,350 natisniti, da je prišlo do težave. 86 00:03:37,350 --> 00:03:40,120 En kompromis, ki menijo, da s pridržanjem vse 87 00:03:40,120 --> 00:03:43,180 negativne vrednosti v kontrolnih vrednosti, ob predpostavki, da je to 88 00:03:43,180 --> 00:03:46,070 32-bitno celo, da sem v bistvu odpeljali okoli 89 00:03:46,070 --> 00:03:48,970 2000000000 morebitne vrnjene vrednosti. 90 00:03:48,970 --> 00:03:51,270 >> Vrste vrednosti vrnitvi so eden od najpomembnejših elementov 91 00:03:51,270 --> 00:03:52,460 Funkcija klice. 92 00:03:52,460 --> 00:03:54,670 Upajmo, da ta kratek pregled pomagal menite o 93 00:03:54,670 --> 00:03:59,110 Tri ključne vrste: neveljaven, Rezultati vrednote in kontrolne vrednosti, 94 00:03:59,110 --> 00:04:00,190 in ko vsi trije bi lahko 95 00:04:00,190 --> 00:04:02,010 primerno kodo. 96 00:04:02,010 --> 00:04:03,260 Hvala za ogled.