1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Dus als je hebt gezien onze video op structuren, 3 00:00:07,220 --> 00:00:10,950 weet je al dat we de vermogen om eigen data types. 4 00:00:10,950 --> 00:00:14,530 Maar als je hebt gebruikt structuren, weet je die soms gebruik van deze gegevens typen 5 00:00:14,530 --> 00:00:16,446 kan eigenlijk een beetje te zijn omslachtig omdat we 6 00:00:16,446 --> 00:00:19,210 moeten de structuur zoekwoord wanneer we werken met them-- 7 00:00:19,210 --> 00:00:21,257 struct auto of struct student. 8 00:00:21,257 --> 00:00:23,090 Dat is een veel te typen als we willen gewoon om te hebben 9 00:00:23,090 --> 00:00:24,830 iets simpels, zoals een structuur. 10 00:00:24,830 --> 00:00:26,390 We willen have-- we willen in staat zijn om te werken met de dingen 11 00:00:26,390 --> 00:00:29,350 een beetje meer verkorte wijze, zoals int of char, iets waar veel 12 00:00:29,350 --> 00:00:31,240 handiger om te typen. 13 00:00:31,240 --> 00:00:33,100 >> Gelukkig is er een manier om dit te doen in C, 14 00:00:33,100 --> 00:00:37,150 met iets typedef genaamd, dat is een manier om steno maken of herschreven 15 00:00:37,150 --> 00:00:38,640 namen voor gegevenstypen. 16 00:00:38,640 --> 00:00:40,720 U kunt gegevens herschrijven types die al bestaan, 17 00:00:40,720 --> 00:00:43,970 of kunt u gegevens typen van je eigen schrijven. 18 00:00:43,970 --> 00:00:46,890 >> Het eerste wat je doet is dat je definiëren een soort op de normale manier, 19 00:00:46,890 --> 00:00:52,271 en dan moet je gewoon alias dat het iets else-- typedef oude naam een ​​nieuwe naam. 20 00:00:52,271 --> 00:00:53,520 Vrij eenvoudig, toch? 21 00:00:53,520 --> 00:00:56,240 Dus we konden typedef bijvoorbeeld, de bestaande data 22 00:00:56,240 --> 00:01:00,266 type unsigned char als byte. 23 00:01:00,266 --> 00:01:03,140 En dan, vanaf nu, nadat we hebben weer maakte dit type definition--, 24 00:01:03,140 --> 00:01:07,570 die meestal gaat worden aan de top onze dot C bestanden of in een punt H bestand 25 00:01:07,570 --> 00:01:10,590 afzonderlijk, we kunnen gewoon Gebruik bijten overal 26 00:01:10,590 --> 00:01:12,180 we zouden hebben gebruikt unsigned char. 27 00:01:12,180 --> 00:01:14,300 Dat is een stuk korter te typen. 28 00:01:14,300 --> 00:01:19,280 >> In de bibliotheek CS50's, we dit-- doen we typedef char ster als string. 29 00:01:19,280 --> 00:01:21,400 Omdat we geabstraheerd weg van het idee van pointers. 30 00:01:21,400 --> 00:01:25,072 Het feit dat een string echt een pointer naar het eerste character-- 31 00:01:25,072 --> 00:01:26,780 een array van karakters, want het is gewoon 32 00:01:26,780 --> 00:01:29,863 zo verwarrend om je hoofd rond te krijgen dat-- maar in feite dat is wat we doen. 33 00:01:29,863 --> 00:01:35,140 En deze regel code werkelijk bestaat in CS50 dot H typedef char ster touwtje, 34 00:01:35,140 --> 00:01:39,021 alleen maar om dat een beetje minder te maken omslachtig te maken hebben met. 35 00:01:39,021 --> 00:01:41,520 Al heb je waarschijnlijk gezien beetje van de waarde hier, 36 00:01:41,520 --> 00:01:44,160 maar typedef wordt groot in combinatie met structuren 37 00:01:44,160 --> 00:01:45,780 zoals ik zinspeelde eerder. 38 00:01:45,780 --> 00:01:48,550 Structuren hebben een twee-woord typenaam. 39 00:01:48,550 --> 00:01:52,020 En dus ze kan echt irritant variabelen van dit type te maken, 40 00:01:52,020 --> 00:01:56,310 of [onverstaanbaar] van de structuur iets, je lijnen kan gewoon echt, echt lang. 41 00:01:56,310 --> 00:01:59,400 En dus kun je typedef gebruiken om te komen met iets een stuk korter. 42 00:01:59,400 --> 00:02:04,650 >> Dus als ik definiëren een auto als volgt, heb ik Mijn definitie van een car-- struct auto, 43 00:02:04,650 --> 00:02:07,230 en open vervolgens accolade, alle het gebied van mijn structuur, 44 00:02:07,230 --> 00:02:11,030 dicht accolade, semi-colon-- nadat ik mijn gegevens soort hebt gedefinieerd, 45 00:02:11,030 --> 00:02:15,680 Ik kan struct typedef auto als de auto underscore t. 46 00:02:15,680 --> 00:02:19,670 En toen heb ik dat gedaan, nu elke keer dat ik anders zou hebben gebruikt struct 47 00:02:19,670 --> 00:02:22,680 auto, kan ik gewoon gebruik maken van de auto underscore t. 48 00:02:22,680 --> 00:02:26,480 Dat is een stuk korter aan een manier om uitdrukken dit idee van deze structuur 49 00:02:26,480 --> 00:02:28,530 die ik zojuist. 50 00:02:28,530 --> 00:02:33,620 >> Als alternatief, omdat de structuren zijn zo vaak gebruikt in typedef, 51 00:02:33,620 --> 00:02:37,980 er is a-- je daadwerkelijk kunt bepalen de typt tussen de start en het einde. 52 00:02:37,980 --> 00:02:42,020 Dus de typedef structuur is weer meestal typedef, oude naam, nieuwe naam, 53 00:02:42,020 --> 00:02:45,360 waarbij de namen reeds types die u hebt gemaakt. 54 00:02:45,360 --> 00:02:49,620 Maar je kunt eigenlijk een structuur definiëren in het midden van de typedef 55 00:02:49,620 --> 00:02:51,760 in plaats van te bepalen apart, en vervolgens 56 00:02:51,760 --> 00:02:52,990 doe een typedef ervan. 57 00:02:52,990 --> 00:02:55,780 En dat zou net zo uitzien als dit-- typedef struct auto, 58 00:02:55,780 --> 00:02:59,957 geopend accolade, al uw vakgebied definities, dicht accolade, auto t. 59 00:02:59,957 --> 00:03:03,290 Zodat de oude naam is al dat spul in de rood, je bent gewoon het definiëren van de structuur 60 00:03:03,290 --> 00:03:05,610 en benoemen het op hetzelfde moment. 61 00:03:05,610 --> 00:03:07,790 En dan de nieuwe naam is de auto underscore t. 62 00:03:07,790 --> 00:03:10,150 En dus als we beginnen te gebruiken dit in de code, eerder I 63 00:03:10,150 --> 00:03:13,279 zou hebben gezegd, structuur auto mycar puntkomma. 64 00:03:13,279 --> 00:03:14,820 Nou ik weet niet meer te doen. 65 00:03:14,820 --> 00:03:20,265 Nu ik de typedef heb gebruikt, ik kan alleen maar zeggen dat de auto underscore t, mycar. 66 00:03:20,265 --> 00:03:22,640 Dat is een stuk korter van een manier om het te doen, en in feite, het is 67 00:03:22,640 --> 00:03:24,515 gaat om veel meer te zijn handig, vooral 68 00:03:24,515 --> 00:03:27,730 als je begint te structuren te gebruiken veel meer in uw code. 69 00:03:27,730 --> 00:03:28,810 >> Ik ben Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Dit is CS50. 71 00:03:30,640 --> 00:03:32,415