1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] Chris Gerber: Funkcio estas serio de paŝoj ene de 2 00:00:09,540 --> 00:00:12,000 pli granda programo, kiu estas kutime intencita esti nomata 3 00:00:12,000 --> 00:00:14,440 multnombraj tempoj kaj de multnombraj aliaj lokoj en 4 00:00:14,440 --> 00:00:15,720 la programo. 5 00:00:15,720 --> 00:00:18,480 Kiam kreante C funkcio, unu el la postuloj estas 6 00:00:18,480 --> 00:00:21,050 specifi reveno valoro tipo. 7 00:00:21,050 --> 00:00:23,490 La plej simpla kazo estas situacio kie la nomante 8 00:00:23,490 --> 00:00:26,510 kodo ne estas koncernita kun la rezulto de la funkcio. 9 00:00:26,510 --> 00:00:28,530 Tio povas esti la kazo kiam ni presi datumojn al la 10 00:00:28,530 --> 00:00:31,120 uzanto ekrano, kiel kun printf. 11 00:00:31,120 --> 00:00:33,140 En ĉi tiu kazo, ni povas deklari reveno valoro 12 00:00:33,140 --> 00:00:35,020 esti de tipo malplena. 13 00:00:35,020 --> 00:00:37,130 Uzanta void simple rakontas la tradukilo, ke neniu 14 00:00:37,130 --> 00:00:39,120 valoro estos redonita. 15 00:00:39,120 --> 00:00:40,530 Ni vidu kion ĉi aspektas. 16 00:00:40,530 --> 00:00:42,940 >> Diru, ke ni havas funkcion nomita say_hello ke 17 00:00:42,940 --> 00:00:44,490 prenas unu argumento. 18 00:00:44,490 --> 00:00:47,050 Ni pasas la nomon de persono kaj tio montros saluton 19 00:00:47,050 --> 00:00:48,380 en la ekrano. 20 00:00:48,380 --> 00:00:50,505 La nomo estos de tipo char *. 21 00:00:50,505 --> 00:00:53,080 Kaj ni precizigi ke la argumento. 22 00:00:53,080 --> 00:00:55,970 Mia apliko ne bezonas scii kion estis presita aŭ se 23 00:00:55,970 --> 00:00:56,970 estis presita. 24 00:00:56,970 --> 00:00:59,680 Do la reveno valoro estos de tipo malplena. 25 00:00:59,680 --> 00:01:02,060 Ĉi tiu funkcio povas presi al la ekrano per ordono 26 00:01:02,060 --> 00:01:07,620 printf ("Saluton,% s \ n 27 00:01:07,620 --> 00:01:12,100 », Nomo);. 28 00:01:12,100 --> 00:01:14,690 La saluto estos montrata kaj kontrolo estos pasinta 29 00:01:14,690 --> 00:01:16,260 dorso al la nomante kodo. 30 00:01:16,260 --> 00:01:19,370 Unu afero noti estas ke kiam la reveno valoro tipo estas malplena, 31 00:01:19,370 --> 00:01:20,790 vi ne bezonas inkluzivi revenon 32 00:01:20,790 --> 00:01:22,300 deklaro en la funkcio. 33 00:01:22,300 --> 00:01:25,270 Se vi elektas inkluzivas unu, ne inkludas revenon valoro 34 00:01:25,270 --> 00:01:27,420 kiel argumento. 35 00:01:27,420 --> 00:01:29,380 >> En iuj kazoj, havas sencon kaj redonas 36 00:01:29,380 --> 00:01:30,570 valoro de funkcio. 37 00:01:30,570 --> 00:01:33,900 Diru, ke ni skribas funkcio nomita add_floats. 38 00:01:33,900 --> 00:01:36,160 Ni pasas du argumentoj, ambaŭ flosas, 39 00:01:36,160 --> 00:01:37,510 nomita unua kaj dua. 40 00:01:37,510 --> 00:01:40,520 Kaj rakontos al ni kion la sumo de tiuj kaleŝegoj estas. 41 00:01:40,520 --> 00:01:43,000 Ni scias ke se ni aldonas du kaleŝegoj kune, la rezulto 42 00:01:43,000 --> 00:01:44,120 estos kaleŝego. 43 00:01:44,120 --> 00:01:47,540 Donita ke ni elektu revenon tipo de kaleŝego. 44 00:01:47,540 --> 00:01:50,040 Ĉi tiu funkcio tion faros ŝtono kaj reveni 45 00:01:50,040 --> 00:01:52,260 la valoroj en komunikaĵo kiel reveno 46 00:01:52,260 --> 00:01:54,770 unua + dua;. 47 00:01:54,770 --> 00:01:57,300 Kiam kontrolo pasis reen al la nomante kodo, la 48 00:01:57,300 --> 00:02:00,030 rezultanta valoro estas nun disponebla por tiu kodo. 49 00:02:00,030 --> 00:02:04,250 Ni povas gardi ĉi tiu valoro, ekzemple: float rezulto = 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 Rezulto en tiu kazo estus nun enhavos la valoron 4,76. 53 00:02:15,200 --> 00:02:18,620 >> Kiel memorigas, glitpunkta valoroj estas malpreciza. 54 00:02:18,620 --> 00:02:21,250 Do, se ĉi tio estis financaj kalkulo, uzante dolaroj kaj 55 00:02:21,250 --> 00:02:24,960 centonoj, ni volas konsideri preciza datumtipo kiel 56 00:02:24,960 --> 00:02:29,120 INT kaj realigi la ŝtono en cendoj. 57 00:02:29,120 --> 00:02:31,270 >> Alia kazo kie ni volus redoni valoro de 58 00:02:31,270 --> 00:02:33,980 funkcio estas kiam ni volas scii se funkcio estis 59 00:02:33,980 --> 00:02:35,960 prospera. 60 00:02:35,960 --> 00:02:39,190 Se ĝi ne sukcesis, ni ankaŭ volas scii kion tipo de 61 00:02:39,190 --> 00:02:41,250 Eraro okazis. 62 00:02:41,250 --> 00:02:43,647 Diru, ke ni provas malfermi dosieron en disko por rakonti 63 00:02:43,647 --> 00:02:45,220 la nombro da karakteroj en ĝi. 64 00:02:45,220 --> 00:02:48,635 Se la dosiero ne povas esti malfermita, ni volas por povi halti kaj 65 00:02:48,635 --> 00:02:50,910 diru al la uzanto pri la problemo. 66 00:02:50,910 --> 00:02:54,070 >> Ni vokos nia funkcio count_file_chars kaj volo 67 00:02:54,070 --> 00:02:55,490 preni unu argumento. 68 00:02:55,490 --> 00:02:57,420 Ni pasas en la nomo de la dosiero uzante 69 00:02:57,420 --> 00:02:59,610 char * nomas dosiernomo. 70 00:02:59,610 --> 00:03:03,050 Ĉi tiu funkcio povas rigardi ion kiel ĉi tio. 71 00:03:03,050 --> 00:03:05,450 En ĉi tiu ekzemplo, ni devus atendi la grafo revenis al 72 00:03:05,450 --> 00:03:07,130 esti 0 aŭ pli. 73 00:03:07,130 --> 00:03:08,870 Ĉi tio lasas al ni la negativaj entjeroj al 74 00:03:08,870 --> 00:03:10,200 uzi kiel gardostaranto valoroj. 75 00:03:10,200 --> 00:03:13,320 Al gardostaranto valoro estas simple speciala valoro kiu ne estas 76 00:03:13,320 --> 00:03:16,200 leĝa datumoj sed ne transdoni informon. 77 00:03:16,200 --> 00:03:19,480 Ĉi tie, se mi revenas al -1 por la nomi kodo, mi estas 78 00:03:19,480 --> 00:03:21,830 fakte sendi la mesaĝon ke eraro okazis dum 79 00:03:21,830 --> 00:03:23,810 provante atingi la dosieron. 80 00:03:23,810 --> 00:03:26,060 Mi povis tiam kontrolu ke reveno valoro por determini se mia 81 00:03:26,060 --> 00:03:28,060 funkcio alvoko sukcesis. 82 00:03:28,060 --> 00:03:30,350 Se la numero estis 0 aŭ pli granda, mi konas la 83 00:03:30,350 --> 00:03:32,180 nombro da signoj en la dosiero. 84 00:03:32,180 --> 00:03:35,310 Se, tamen, la nombro estis malpli ol 0, mi povis simple 85 00:03:35,310 --> 00:03:37,350 presi tiu problemo okazis. 86 00:03:37,350 --> 00:03:40,120 Unu komerco-off konsideri estas ke per rezervante ĉiuj 87 00:03:40,120 --> 00:03:43,180 negativaj valoroj kiel gardostaranto valoroj, supozante tiun estas 88 00:03:43,180 --> 00:03:46,070 32-bita entjero, mi esence forprenis ĉirkaŭ 89 00:03:46,070 --> 00:03:48,970 2 miliardoj ebla reveno valoroj. 90 00:03:48,970 --> 00:03:51,270 >> Reiri valoro tipoj estas unu el la plej gravaj elementoj de 91 00:03:51,270 --> 00:03:52,460 funkcio alvokoj. 92 00:03:52,460 --> 00:03:54,670 Espereble ĉi tiu mallonga resumo helpis vi opinias pri 93 00:03:54,670 --> 00:03:59,110 tri ŝlosilaj tipoj: nula, rezulto valoroj kaj gardostaranto valoroj, 94 00:03:59,110 --> 00:04:00,190 kaj kiam ĉiu el la tri povus esti 95 00:04:00,190 --> 00:04:02,010 taŭga en via kodo. 96 00:04:02,010 --> 00:04:03,260 Dankon pro rigardante.