1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Så hvis du har set vores video på strukturer, 3 00:00:07,220 --> 00:00:10,950 du allerede ved, at vi har den evne til at definere vores egne datatyper. 4 00:00:10,950 --> 00:00:14,530 Men hvis du har brugt strukturer, du ved at nogle gange bruge disse datatyper 5 00:00:14,530 --> 00:00:16,446 kan faktisk være lidt besværlige, fordi vi 6 00:00:16,446 --> 00:00:19,210 nødt til at bruge struct søgeord når vi arbejder med them-- 7 00:00:19,210 --> 00:00:21,257 struct bil eller struct elev. 8 00:00:21,257 --> 00:00:23,090 Det er en masse at skrive hvis vi bare vil have 9 00:00:23,090 --> 00:00:24,830 noget simpelt, som en struktur. 10 00:00:24,830 --> 00:00:26,390 Vi ønsker at have-- vi ønsker at være i stand til at arbejde med ting 11 00:00:26,390 --> 00:00:29,350 lidt mere stenografi måde, ligesom int eller char, noget meget 12 00:00:29,350 --> 00:00:31,240 mere bekvemt at skrive. 13 00:00:31,240 --> 00:00:33,100 >> Heldigvis er der en måde at gøre dette i C, 14 00:00:33,100 --> 00:00:37,150 med noget, der hedder typedef, som er en måde at skabe stenografi eller omskrevet 15 00:00:37,150 --> 00:00:38,640 navne til datatyper. 16 00:00:38,640 --> 00:00:40,720 Du kan omskrive data typer, der allerede findes, 17 00:00:40,720 --> 00:00:43,970 eller du kan skrive datatyper for din egen. 18 00:00:43,970 --> 00:00:46,890 >> Den første ting du skal gøre er dig definere en type på den normale måde, 19 00:00:46,890 --> 00:00:52,271 og så skal du bare aliaser det til noget else-- typedef gamle navn nye navn. 20 00:00:52,271 --> 00:00:53,520 Temmelig ligetil, ikke? 21 00:00:53,520 --> 00:00:56,240 Så vi kunne typedef for eksempel de allerede eksisterende data 22 00:00:56,240 --> 00:01:00,266 type unsigned char som byte. 23 00:01:00,266 --> 00:01:03,140 Og så, fra nu af, efter at vi har gjort denne type definition-- igen, 24 00:01:03,140 --> 00:01:07,570 som normalt vil være på toppen af vores dot C filer eller i en dot H fil 25 00:01:07,570 --> 00:01:10,590 separat, kan vi bare bruge bide overalt 26 00:01:10,590 --> 00:01:12,180 vi ville have brugt unsigned char. 27 00:01:12,180 --> 00:01:14,300 Det er en meget kortere at skrive. 28 00:01:14,300 --> 00:01:19,280 >> I CS50 bibliotek, vi gør denne-- Vi typedef char stjerne som streng. 29 00:01:19,280 --> 00:01:21,400 Fordi vi abstraheret væk ideen om pointere. 30 00:01:21,400 --> 00:01:25,072 Og det faktum, at en streng er virkelig en pointer til den første character-- 31 00:01:25,072 --> 00:01:26,780 et array af tegn, fordi det er bare 32 00:01:26,780 --> 00:01:29,863 så forvirrende at få dit hoved omkring at-- men i virkeligheden det er hvad vi gør. 33 00:01:29,863 --> 00:01:35,140 Og denne linje kode rent faktisk eksisterer i CS50 dot H typedef char stjerne streng, 34 00:01:35,140 --> 00:01:39,021 bare for at gøre, at lidt mindre besværlige at skulle beskæftige sig med. 35 00:01:39,021 --> 00:01:41,520 Allerede du har set sandsynligvis en lille smule af værdien her, 36 00:01:41,520 --> 00:01:44,160 men typedef bliver stor når de kombineres med strukturer, 37 00:01:44,160 --> 00:01:45,780 som jeg hentydet til tidligere. 38 00:01:45,780 --> 00:01:48,550 Strukturer har en to-ordtype navn. 39 00:01:48,550 --> 00:01:52,020 Og så de kan være virkelig irriterende at skabe variable af denne type, 40 00:01:52,020 --> 00:01:56,310 eller [uhørligt] af struct noget, din linjer kan bare få rigtig, rigtig længe. 41 00:01:56,310 --> 00:01:59,400 Og så du kan bruge typedef til at komme op med noget meget kortere. 42 00:01:59,400 --> 00:02:04,650 >> Så hvis jeg definerer en bil som følger, jeg har min definition af en car-- struct bil, 43 00:02:04,650 --> 00:02:07,230 og derefter åbne krøllet tandbøjle, alle områderne min struktur, 44 00:02:07,230 --> 00:02:11,030 tæt krøllet bandage, semi-colon-- efter at jeg har defineret min datatype, 45 00:02:11,030 --> 00:02:15,680 Jeg kan typedef struct bil som bil understregning t. 46 00:02:15,680 --> 00:02:19,670 Og så når jeg har gjort det, nu hver gang jeg ellers ville have brugt struct 47 00:02:19,670 --> 00:02:22,680 bil, kan jeg bare bruge bilen understregning t. 48 00:02:22,680 --> 00:02:26,480 Det er en meget kortere på en måde at udtrykke denne idé om denne struktur 49 00:02:26,480 --> 00:02:28,530 at jeg lige har oprettet. 50 00:02:28,530 --> 00:02:33,620 >> Alternativt fordi strukturer er så almindeligt anvendt i typedef, 51 00:02:33,620 --> 00:02:37,980 der er en-- du rent faktisk kan definere skrive i mellem starten og slutningen. 52 00:02:37,980 --> 00:02:42,020 Så typedef struktur igen er normalt typedef, gamle navn, nyt navn, 53 00:02:42,020 --> 00:02:45,360 hvor navnene er allerede typer, som du har oprettet. 54 00:02:45,360 --> 00:02:49,620 Men du kan faktisk definere en struktur lige i midten af ​​typedef 55 00:02:49,620 --> 00:02:51,760 i stedet for at definere det separat, og derefter 56 00:02:51,760 --> 00:02:52,990 gør en typedef af det. 57 00:02:52,990 --> 00:02:55,780 Og det ville se ligesom her-- typedef struct bil, 58 00:02:55,780 --> 00:02:59,957 åben krøllet klammeparentes, alle dine felt definitioner, luk krøllet tandbøjle, bil t. 59 00:02:59,957 --> 00:03:03,290 Så det gamle navn er alt det i rød, er du bare definere strukturen 60 00:03:03,290 --> 00:03:05,610 og navngive den på samme tid. 61 00:03:05,610 --> 00:03:07,790 Og så det nye navn er bil understregning t. 62 00:03:07,790 --> 00:03:10,150 Og så hvis vi begynder at bruge dette i kode, der tidligere jeg 63 00:03:10,150 --> 00:03:13,279 kunne have sagt, struct bil MyCar semikolon. 64 00:03:13,279 --> 00:03:14,820 Jamen jeg behøver ikke at gøre det længere. 65 00:03:14,820 --> 00:03:20,265 Nu, hvor jeg har brugt typedef, jeg kan bare sige bil understregning t, MyCar. 66 00:03:20,265 --> 00:03:22,640 Det er en meget kortere for en måde at gøre det, og i virkeligheden er det 67 00:03:22,640 --> 00:03:24,515 kommer til at være en meget mere praktisk, især 68 00:03:24,515 --> 00:03:27,730 som du begynder at bruge strukturer meget mere i din kode. 69 00:03:27,730 --> 00:03:28,810 >> Jeg er Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Det er CS50. 71 00:03:30,640 --> 00:03:32,415