1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] CHRIS GERBER: 'n Funksie is 'n reeks van stappe binne 'n 2 00:00:09,540 --> 00:00:12,000 groter program, wat gewoonlik bedoel is om genoem te word 3 00:00:12,000 --> 00:00:14,440 verskeie kere en uit verskeie ander plekke in 4 00:00:14,440 --> 00:00:15,720 die program. 5 00:00:15,720 --> 00:00:18,480 Wanneer die skep van 'n C-funksie, een van die vereistes is om te 6 00:00:18,480 --> 00:00:21,050 spesifiseer 'n tipe return value. 7 00:00:21,050 --> 00:00:23,490 Die eenvoudigste geval is 'n situasie waar die roeping 8 00:00:23,490 --> 00:00:26,510 kode is nie gemoeid met die resultaat van die funksie. 9 00:00:26,510 --> 00:00:28,530 Dit kan die geval wees wanneer ons die druk data aan die 10 00:00:28,530 --> 00:00:31,120 gebruiker se vertoning, soos met printf. 11 00:00:31,120 --> 00:00:33,140 In hierdie geval, kan ons 'n opbrengs waarde verklaar 12 00:00:33,140 --> 00:00:35,020 te wees van die tipe leemte. 13 00:00:35,020 --> 00:00:37,130 Die gebruik van void vertel net die samesteller dat geen 14 00:00:37,130 --> 00:00:39,120 waarde sal teruggestuur word. 15 00:00:39,120 --> 00:00:40,530 Kom ons kyk wat dit lyk soos. 16 00:00:40,530 --> 00:00:42,940 >> Kom ons sê dat ons 'n funksie genoem say_hello wat 17 00:00:42,940 --> 00:00:44,490 neem 'n argument. 18 00:00:44,490 --> 00:00:47,050 Ons sal slaag dit 'n persoon se naam en dit sal vertoon 'n groet 19 00:00:47,050 --> 00:00:48,380 op die skerm. 20 00:00:48,380 --> 00:00:50,505 Die naam sal wees van tipe char *. 21 00:00:50,505 --> 00:00:53,080 En ons sal spesifiseer dat as die argument. 22 00:00:53,080 --> 00:00:55,970 My aansoek nie nodig het om te weet wat is gedruk, of indien dit 23 00:00:55,970 --> 00:00:56,970 gedruk is. 24 00:00:56,970 --> 00:00:59,680 So die terugkeer waarde sal wees van die tipe leemte. 25 00:00:59,680 --> 00:01:02,060 Hierdie funksie kan druk op die skerm met 'n opdrag soos 26 00:01:02,060 --> 00:01:07,620 printf ("Hello,% s \ n 27 00:01:07,620 --> 00:01:12,100 ", Naam); 28 00:01:12,100 --> 00:01:14,690 Die groet sal vertoon word en beheer sal deurgegee word 29 00:01:14,690 --> 00:01:16,260 terug na die roeping kode. 30 00:01:16,260 --> 00:01:19,370 Een ding om daarop te let, is dat wanneer die terugkeer waarde tipe is nietig, 31 00:01:19,370 --> 00:01:20,790 jy hoef nie 'n opgawe in te sluit 32 00:01:20,790 --> 00:01:22,300 stelling in die funksie. 33 00:01:22,300 --> 00:01:25,270 As jy kies om een ​​in te sluit, sluit nie 'n terugkeer waarde 34 00:01:25,270 --> 00:01:27,420 as 'n argument. 35 00:01:27,420 --> 00:01:29,380 >> In sommige gevalle, maak dit sin om terug te keer 36 00:01:29,380 --> 00:01:30,570 die waarde van 'n funksie. 37 00:01:30,570 --> 00:01:33,900 Kom ons sê dat ons 'n funksie genoem add_floats skryf. 38 00:01:33,900 --> 00:01:36,160 Ons sal dit slaag twee argumente, beide dryf, 39 00:01:36,160 --> 00:01:37,510 eerste en tweede. 40 00:01:37,510 --> 00:01:40,520 En dit sal vir ons sê wat die som van daardie dryf is. 41 00:01:40,520 --> 00:01:43,000 Ons weet dat as ons by te voeg twee dryf saam, is die resultaat 42 00:01:43,000 --> 00:01:44,120 sal 'n float wees. 43 00:01:44,120 --> 00:01:47,540 Gegee dat ek, ons kies 'n terugkeer tipe float. 44 00:01:47,540 --> 00:01:50,040 Hierdie funksie sal hierdie berekening voer en terugkeer 45 00:01:50,040 --> 00:01:52,260 die waardes in 'n stelling soos die terugkeer 46 00:01:52,260 --> 00:01:54,770 eerste + tweede; 47 00:01:54,770 --> 00:01:57,300 Wanneer beheer geslaag terug na die roeping kode, die 48 00:01:57,300 --> 00:02:00,030 gevolglike waarde is nou beskikbaar vir die kode. 49 00:02:00,030 --> 00:02:04,250 Ons kan hierdie waarde stoor soos so: float resultaat = 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 Resultaat in hierdie geval sou nou ook die waarde 4,76. 53 00:02:15,200 --> 00:02:18,620 >> As 'n herinnering, floating point waardes is vaag. 54 00:02:18,620 --> 00:02:21,250 So as dit was 'n finansiële berekening, deur gebruik te maak van dollars en 55 00:02:21,250 --> 00:02:24,960 sent, ons wil 'n akkurate data tipe soos om te oorweeg 56 00:02:24,960 --> 00:02:29,120 int en voer die berekening in pennies. 57 00:02:29,120 --> 00:02:31,270 >> Nog 'n geval waar ons wil om terug te keer van 'n waarde van 'n 58 00:02:31,270 --> 00:02:33,980 funksie is wanneer ons wil weet, as 'n funksie 59 00:02:33,980 --> 00:02:35,960 suksesvol. 60 00:02:35,960 --> 00:02:39,190 Indien dit nie suksesvol was nie, kan ons ook wil weet watter tipe 61 00:02:39,190 --> 00:02:41,250 fout het voorgekom. 62 00:02:41,250 --> 00:02:43,647 Kom ons sê dat ons probeer om 'n lêer oop te maak op die skyf om te tel 63 00:02:43,647 --> 00:02:45,220 die aantal karakters wat in dit. 64 00:02:45,220 --> 00:02:48,635 As die lêer kan nie geopen word nie, wil ons graag in staat wees om te stop en 65 00:02:48,635 --> 00:02:50,910 vertel die gebruiker oor die probleem. 66 00:02:50,910 --> 00:02:54,070 >> Ons sal bel ons funksie count_file_chars en dit sal 67 00:02:54,070 --> 00:02:55,490 neem 'n argument. 68 00:02:55,490 --> 00:02:57,420 Ons sal in die naam van die lêer met 'n 69 00:02:57,420 --> 00:02:59,610 char * geroep lêernaam. 70 00:02:59,610 --> 00:03:03,050 Hierdie funksie kan lyk iets soos hierdie. 71 00:03:03,050 --> 00:03:05,450 In hierdie voorbeeld, sou ons verwag dat die telling teruggekeer na 72 00:03:05,450 --> 00:03:07,130 0 of meer. 73 00:03:07,130 --> 00:03:08,870 Dit laat ons die negatiewe heelgetalle 74 00:03:08,870 --> 00:03:10,200 gebruik as brandwag waardes. 75 00:03:10,200 --> 00:03:13,320 'N brandwag waarde is net 'n spesiale waarde wat nie 76 00:03:13,320 --> 00:03:16,200 Wettige data, maar dit dra inligting. 77 00:03:16,200 --> 00:03:19,480 Hier, as ek terugkeer 'n -1 aan die roeping kode, ek 78 00:03:19,480 --> 00:03:21,830 eintlik die stuur van die boodskap dat 'n Fout het voorgekom terwyl 79 00:03:21,830 --> 00:03:23,810 probeer om die lêer oop te maak. 80 00:03:23,810 --> 00:03:26,060 Ek kan dan kontroleer dat die terugkeer waarde te bepaal of my 81 00:03:26,060 --> 00:03:28,060 funksie oproep was suksesvol. 82 00:03:28,060 --> 00:03:30,350 Indien die getal 0 of groter is, sal ek weet wat die 83 00:03:30,350 --> 00:03:32,180 aantal van karakters in die lêer. 84 00:03:32,180 --> 00:03:35,310 As, egter, was die getal minder as 0, ek kon net 85 00:03:35,310 --> 00:03:37,350 druk dat 'n probleem het plaasgevind. 86 00:03:37,350 --> 00:03:40,120 Een trade-off om te oorweeg, is dat deur die bespreking van al die 87 00:03:40,120 --> 00:03:43,180 negatiewe waardes as brandwag waardes, met die veronderstelling dat dit is 'n 88 00:03:43,180 --> 00:03:46,070 32-bis-heelgetal, ek het in wese weggeneem om 89 00:03:46,070 --> 00:03:48,970 2 miljard moontlike terugkeer waardes. 90 00:03:48,970 --> 00:03:51,270 >> Return value tipes is een van die belangrikste elemente van 91 00:03:51,270 --> 00:03:52,460 funksie oproepe. 92 00:03:52,460 --> 00:03:54,670 Hopelik sal hierdie kort oorsig het gehelp jy dink oor 93 00:03:54,670 --> 00:03:59,110 drie belangrike tipes: void, gevolg waardes, en brandwag waardes, 94 00:03:59,110 --> 00:04:00,190 en wanneer elk van die drie kan wees 95 00:04:00,190 --> 00:04:02,010 toepaslike in jou kode. 96 00:04:02,010 --> 00:04:03,260 Dankie vir jou kyk.