1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Så om du har sett vår video på strukturer, 3 00:00:07,220 --> 00:00:10,950 du redan vet att vi har möjlighet att definiera egna datatyper. 4 00:00:10,950 --> 00:00:14,530 Men om du har använt strukturer, vet du att ibland använda dessa datatyper 5 00:00:14,530 --> 00:00:16,446 kan faktiskt vara lite besvärlig eftersom vi 6 00:00:16,446 --> 00:00:19,210 måste använda struct nyckelordet När vi arbetar med them-- 7 00:00:19,210 --> 00:00:21,257 struct bil eller struct student. 8 00:00:21,257 --> 00:00:23,090 Det är en hel del att skriva Om vi ​​vill bara ha 9 00:00:23,090 --> 00:00:24,830 något enkelt, som en struktur. 10 00:00:24,830 --> 00:00:26,390 Vi vill have-- vi vill kunna arbeta med saker 11 00:00:26,390 --> 00:00:29,350 lite mer förkortning sätt, som int eller röding, något mycket 12 00:00:29,350 --> 00:00:31,240 mer praktiskt att skriva. 13 00:00:31,240 --> 00:00:33,100 >> Lyckligtvis finns det ett sätt att göra detta i C, 14 00:00:33,100 --> 00:00:37,150 med något som kallas typedef, som är ett sätt att skapa en förkortning eller skrivas 15 00:00:37,150 --> 00:00:38,640 namn för datatyper. 16 00:00:38,640 --> 00:00:40,720 Du kan skriva uppgifter typer som redan finns, 17 00:00:40,720 --> 00:00:43,970 eller så kan du skriva datatyper i ditt eget. 18 00:00:43,970 --> 00:00:46,890 >> Det första du gör är att du definiera en typ på vanligt sätt, 19 00:00:46,890 --> 00:00:52,271 och då du bara alias det till något else-- typedef gamla namnet nytt namn. 20 00:00:52,271 --> 00:00:53,520 Ganska enkelt, eller hur? 21 00:00:53,520 --> 00:00:56,240 Så vi kunde typedef till exempel, den redan befintliga data 22 00:00:56,240 --> 00:01:00,266 typ av unsigned char som byte. 23 00:01:00,266 --> 00:01:03,140 Och sedan, från och med nu, när vi har gjort denna typ definition-- igen, 24 00:01:03,140 --> 00:01:07,570 som vanligtvis kommer att vara på toppen våra punkt C-filer, eller i en punkt H fil 25 00:01:07,570 --> 00:01:10,590 separat, vi kan bara använda bita allt 26 00:01:10,590 --> 00:01:12,180 vi skulle ha använt unsigned char. 27 00:01:12,180 --> 00:01:14,300 Det är en mycket kortare att skriva. 28 00:01:14,300 --> 00:01:19,280 >> I CS50 bibliotek, gör vi this-- Vi typedef röding stjärna som sträng. 29 00:01:19,280 --> 00:01:21,400 Eftersom vi abstraherade bort idén av pekare. 30 00:01:21,400 --> 00:01:25,072 Och det faktum att en sträng är verkligen en pekare till den första character-- 31 00:01:25,072 --> 00:01:26,780 en array av tecken, eftersom det är bara 32 00:01:26,780 --> 00:01:29,863 så förvirrande att få huvudet runt that-- men i själva verket det är vad vi gör. 33 00:01:29,863 --> 00:01:35,140 Och här kodraden faktiskt existerar i CS50 dot H typedef röding stjärna sträng, 34 00:01:35,140 --> 00:01:39,021 bara för att göra det lite mindre besvärliga att ha att göra med. 35 00:01:39,021 --> 00:01:41,520 Redan du har sett förmodligen en lite av värde här, 36 00:01:41,520 --> 00:01:44,160 men typedef blir stor när de kombineras med strukturer, 37 00:01:44,160 --> 00:01:45,780 som jag nämnt tidigare. 38 00:01:45,780 --> 00:01:48,550 Strukturer har en två-ord typnamnet. 39 00:01:48,550 --> 00:01:52,020 Och så de kan bli riktigt irriterande att skapa variabler av denna typ, 40 00:01:52,020 --> 00:01:56,310 eller [OHÖRBAR] av struct något, din linjer kan bara bli riktigt, riktigt lång. 41 00:01:56,310 --> 00:01:59,400 Och så du kan använda typedef att komma upp med något mycket kortare. 42 00:01:59,400 --> 00:02:04,650 >> Så om jag definierar en bil som följer, har jag min definition av en car-- struct bil, 43 00:02:04,650 --> 00:02:07,230 och sedan öppna klammerparentes, alla områdena min struktur, 44 00:02:07,230 --> 00:02:11,030 nära klammerparentes, halv colon-- efter att jag har definierat min datatyp, 45 00:02:11,030 --> 00:02:15,680 Jag kan typedef struct bil som bil streck t. 46 00:02:15,680 --> 00:02:19,670 Och sen när jag har gjort det, nu varje tid jag annars skulle ha använt struct 47 00:02:19,670 --> 00:02:22,680 bil, jag kan bara använda bilen streck t. 48 00:02:22,680 --> 00:02:26,480 Det är en mycket kortare ett sätt att uttrycka denna idé om denna struktur 49 00:02:26,480 --> 00:02:28,530 att jag just har skapat. 50 00:02:28,530 --> 00:02:33,620 >> Alternativt, eftersom strukturer är så vanligt förekommande i typedef, 51 00:02:33,620 --> 00:02:37,980 det finns en-- du faktiskt kan definiera skriva in mellan början och slut. 52 00:02:37,980 --> 00:02:42,020 Så typedef strukturen återigen är vanligtvis typedef, gamla namnet, nytt namn, 53 00:02:42,020 --> 00:02:45,360 där namnen är redan typer som du har skapat. 54 00:02:45,360 --> 00:02:49,620 Men du kan faktiskt definiera en struktur rätt i mitten av typedef 55 00:02:49,620 --> 00:02:51,760 i stället för att behöva definiera det separat, och sedan 56 00:02:51,760 --> 00:02:52,990 gör en typedef det. 57 00:02:52,990 --> 00:02:55,780 Och det skulle se ut precis som this-- typedef struct bil, 58 00:02:55,780 --> 00:02:59,957 öppna klammerparentes, alla ditt område definitioner, nära klammerparentes, bil t. 59 00:02:59,957 --> 00:03:03,290 Så det gamla namnet är allt det där i röd, är du bara definierar strukturen 60 00:03:03,290 --> 00:03:05,610 och namnge den samtidigt. 61 00:03:05,610 --> 00:03:07,790 Och sedan det nya namnet är bil streck t. 62 00:03:07,790 --> 00:03:10,150 Och så om vi börjar använda detta i koden, tidigare jag 63 00:03:10,150 --> 00:03:13,279 kunde ha sagt, struct bil MyCar semikolon. 64 00:03:13,279 --> 00:03:14,820 Tja jag inte behöver göra det längre. 65 00:03:14,820 --> 00:03:20,265 Nu när jag har använt typedef, jag kan bara säga bil streck t, MyCar. 66 00:03:20,265 --> 00:03:22,640 Det är en mycket kortare på ett sätt att göra det, och i själva verket är det 67 00:03:22,640 --> 00:03:24,515 kommer att bli en mycket mer praktiskt, särskilt 68 00:03:24,515 --> 00:03:27,730 när du börjar använda strukturer mycket mer i din kod. 69 00:03:27,730 --> 00:03:28,810 >> Jag är Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Detta är CS50. 71 00:03:30,640 --> 00:03:32,415