1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Do se vi havas vidis nian videon sur strukturoj, 3 00:00:07,220 --> 00:00:10,950 vi jam scias, ke ni havas la kapablo difini nian propran datumtipoj. 4 00:00:10,950 --> 00:00:14,530 Sed se vi uzis strukturoj, komprenu ke kelkfoje uzas tiuj datumtipoj 5 00:00:14,530 --> 00:00:16,446 povas efektive esti iom maloportuna ĉar ni 6 00:00:16,446 --> 00:00:19,210 devas uzi la struct ŝlosilvorto kiam ni laboras kun them-- 7 00:00:19,210 --> 00:00:21,257 struct aŭto aŭ struct studento. 8 00:00:21,257 --> 00:00:23,090 Tio estas multe tajpi se ni nur volas havi 9 00:00:23,090 --> 00:00:24,830 ion simplan, kiel strukturo. 10 00:00:24,830 --> 00:00:26,390 Ni volas have-- ni volas povos labori kun aĵoj 11 00:00:26,390 --> 00:00:29,350 iom pli rapida maniero, kiel int aŭ char, ion multe 12 00:00:29,350 --> 00:00:31,240 pli konvena por tajpi. 13 00:00:31,240 --> 00:00:33,100 >> Feliĉe, ekzistas maniero por fari tion en C, 14 00:00:33,100 --> 00:00:37,150 kun iu nomita typedef, kiu estas manieron krei stenografio aŭ reskribita 15 00:00:37,150 --> 00:00:38,640 nomoj por datumtipoj. 16 00:00:38,640 --> 00:00:40,720 Vi povas reverki datumoj tipoj kiuj jam ekzistas, 17 00:00:40,720 --> 00:00:43,970 aux vi povas skribi datumtipoj de via propra. 18 00:00:43,970 --> 00:00:46,890 >> La unua afero kiun vi faras estas vi difini tipon en la normala maniero, 19 00:00:46,890 --> 00:00:52,271 kaj tiam vi simple alias ĝin al ion else-- typedef malnova nomo nova nomo. 20 00:00:52,271 --> 00:00:53,520 Sufiĉe simpla, ĉu ne? 21 00:00:53,520 --> 00:00:56,240 Do ni povus typedef ekzemple, la jam ekzistantaj datumoj 22 00:00:56,240 --> 00:01:00,266 tipo de unsigned char kiel bitoko. 23 00:01:00,266 --> 00:01:03,140 Kaj tiam, de nun, ni ja faris tiun tipon definition-- denove, 24 00:01:03,140 --> 00:01:07,570 kiu estas kutime tuj estos ĉe la supro de nia punkto C dosieroj, aŭ en punkto H dosieron 25 00:01:07,570 --> 00:01:10,590 aparte, ni povas nur uzi mordi ĉie 26 00:01:10,590 --> 00:01:12,180 ni estus uzinta unsigned char. 27 00:01:12,180 --> 00:01:14,300 Tio estas multe pli mallonga por tajpi. 28 00:01:14,300 --> 00:01:19,280 >> En CS50 la biblioteko, ni faru this-- ni typedef char stelo kiel ŝnuro. 29 00:01:19,280 --> 00:01:21,400 Ĉar ni abstraída for la ideon de punteros. 30 00:01:21,400 --> 00:01:25,072 Kaj la fakto ke kordoj estas vere montrilo al la unua character-- 31 00:01:25,072 --> 00:01:26,780 tabelo de signoj, ĉar ĝi estas nur 32 00:01:26,780 --> 00:01:29,863 tiel konfuza akiri vian kapon ĉirkaŭe that-- sed fakte tio estas kion ni faros. 33 00:01:29,863 --> 00:01:35,140 Kaj ĉi tiu linio de kodo reale ekzistas en CS50 punkto H typedef char stelo kordoj, 34 00:01:35,140 --> 00:01:39,021 nur por fari ke iom malpli ĝene devi trakti. 35 00:01:39,021 --> 00:01:41,520 Jam vi vidis probable iomete de la valoron tie, 36 00:01:41,520 --> 00:01:44,160 sed typedef fariĝas granda kiam kombinita kun strukturoj, 37 00:01:44,160 --> 00:01:45,780 kiel mi aludis al pli frua. 38 00:01:45,780 --> 00:01:48,550 Strukturoj havas du-vorto tipo nomo. 39 00:01:48,550 --> 00:01:52,020 Kaj tiel ili povas esti vere ĝena krei variabloj de tiu tipo, 40 00:01:52,020 --> 00:01:56,310 aŭ [inaudible] de struct io, via linioj povas simple akiri vere, vere longa. 41 00:01:56,310 --> 00:01:59,400 Kaj tiel vi povas uzi typedef veni supren kun io multe pli mallonga. 42 00:01:59,400 --> 00:02:04,650 >> Do se mi difini aŭton kiel sekvas, mi havas mia difino de car-- struct aŭto, 43 00:02:04,650 --> 00:02:07,230 kaj tiam malfermu krispa krampoj, ĉiuj la kampoj de mia strukturo, 44 00:02:07,230 --> 00:02:11,030 proksime krispa krampoj, duon-colon-- post mi difinis mian datumtipo, 45 00:02:11,030 --> 00:02:15,680 Mi povas typedef struct aŭto kiel aŭto substreko t. 46 00:02:15,680 --> 00:02:19,670 Kaj poste kiam mi faris tion, nun ĉiu fojon mi estus alie uzita struct 47 00:02:19,670 --> 00:02:22,680 aŭto, mi povas simple uzi aŭton substreko t. 48 00:02:22,680 --> 00:02:26,480 Tio estas multe pli mallonga de vojo esprimi tiun ideon de ĉi tiu strukturo 49 00:02:26,480 --> 00:02:28,530 ke mi ĵus kreis. 50 00:02:28,530 --> 00:02:33,620 >> Alternative, ĉar strukturoj estas tiel komune uzita en typedef, 51 00:02:33,620 --> 00:02:37,980 ekzistas a-- vi efektive povas difini la entajpi inter la komenco kaj la fino. 52 00:02:37,980 --> 00:02:42,020 Do la typedef strukturo denove estas kutime typedef, malnova nomo, nova nomo, 53 00:02:42,020 --> 00:02:45,360 kie la nomoj estas jam tipoj kiu vi kreis. 54 00:02:45,360 --> 00:02:49,620 Sed vi povas fakte difini strukturo ĝuste en la mezo de la typedef 55 00:02:49,620 --> 00:02:51,760 anstataŭ devi difini ĝin aparte, kaj tiam 56 00:02:51,760 --> 00:02:52,990 fari typedef de ĝi. 57 00:02:52,990 --> 00:02:55,780 Kaj tio aspektus samkiel this-- typedef struct aŭto, 58 00:02:55,780 --> 00:02:59,957 malfermita krispa krampoj, ĉiuj de via kampo difinoj, proksime frizita streĉa, aŭto t. 59 00:02:59,957 --> 00:03:03,290 Do la malnova nomo estas ĉiuj tiu aĵo en la ruĝaj, vi simple difini la strukturon 60 00:03:03,290 --> 00:03:05,610 kaj nomante ĝin samtempe. 61 00:03:05,610 --> 00:03:07,790 Kaj tiam la nova nomo Estas aŭto substreko t. 62 00:03:07,790 --> 00:03:10,150 Kaj do se ni ekuzas tion en kodo, antaŭe mi 63 00:03:10,150 --> 00:03:13,279 povus diri, struct aŭto mycar duon-dupunkto. 64 00:03:13,279 --> 00:03:14,820 Nu mi ne devas fari tion plu. 65 00:03:14,820 --> 00:03:20,265 Nun ke mi jam uzis la typedef mi povas simple diri aŭto substreko t, mycar. 66 00:03:20,265 --> 00:03:22,640 Tio estas multe pli mallonga de vojo fari ĝin, kaj fakte, ĝi estas 67 00:03:22,640 --> 00:03:24,515 tuj estos multe pli konvena, speciale 68 00:03:24,515 --> 00:03:27,730 kiel vi ekuzas strukturoj multe pli en via kodo. 69 00:03:27,730 --> 00:03:28,810 >> Mi Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Jen CS50. 71 00:03:30,640 --> 00:03:32,415