DOUG LLOYD: Så hvis du har set vores video på strukturer,
du allerede ved, at vi har den evne til at definere vores egne datatyper.
Men hvis du har brugt strukturer, du ved at nogle gange bruge disse datatyper
kan faktisk være lidt besværlige, fordi vi
nødt til at bruge struct søgeord når vi arbejder med them--
struct bil eller struct elev.
Det er en masse at skrive hvis vi bare vil have
noget simpelt, som en struktur.
Vi ønsker at have-- vi ønsker at være i stand til at arbejde med ting
lidt mere stenografi måde, ligesom int eller char, noget meget
mere bekvemt at skrive.
>> Heldigvis er der en måde at gøre dette i C,
med noget, der hedder typedef, som er en måde at skabe stenografi eller omskrevet
navne til datatyper.
Du kan omskrive data typer, der allerede findes,
eller du kan skrive datatyper for din egen.
>> Den første ting du skal gøre er dig definere en type på den normale måde,
og så skal du bare aliaser det til noget else-- typedef gamle navn nye navn.
Temmelig ligetil, ikke?
Så vi kunne typedef for eksempel de allerede eksisterende data
type unsigned char som byte.
Og så, fra nu af, efter at vi har gjort denne type definition-- igen,
som normalt vil være på toppen af vores dot C filer eller i en dot H fil
separat, kan vi bare bruge bide overalt
vi ville have brugt unsigned char.
Det er en meget kortere at skrive.
>> I CS50 bibliotek, vi gør denne-- Vi typedef char stjerne som streng.
Fordi vi abstraheret væk ideen om pointere.
Og det faktum, at en streng er virkelig en pointer til den første character--
et array af tegn, fordi det er bare
så forvirrende at få dit hoved omkring at-- men i virkeligheden det er hvad vi gør.
Og denne linje kode rent faktisk eksisterer i CS50 dot H typedef char stjerne streng,
bare for at gøre, at lidt mindre besværlige at skulle beskæftige sig med.
Allerede du har set sandsynligvis en lille smule af værdien her,
men typedef bliver stor når de kombineres med strukturer,
som jeg hentydet til tidligere.
Strukturer har en to-ordtype navn.
Og så de kan være virkelig irriterende at skabe variable af denne type,
eller [uhørligt] af struct noget, din linjer kan bare få rigtig, rigtig længe.
Og så du kan bruge typedef til at komme op med noget meget kortere.
>> Så hvis jeg definerer en bil som følger, jeg har min definition af en car-- struct bil,
og derefter åbne krøllet tandbøjle, alle områderne min struktur,
tæt krøllet bandage, semi-colon-- efter at jeg har defineret min datatype,
Jeg kan typedef struct bil som bil understregning t.
Og så når jeg har gjort det, nu hver gang jeg ellers ville have brugt struct
bil, kan jeg bare bruge bilen understregning t.
Det er en meget kortere på en måde at udtrykke denne idé om denne struktur
at jeg lige har oprettet.
>> Alternativt fordi strukturer er så almindeligt anvendt i typedef,
der er en-- du rent faktisk kan definere skrive i mellem starten og slutningen.
Så typedef struktur igen er normalt typedef, gamle navn, nyt navn,
hvor navnene er allerede typer, som du har oprettet.
Men du kan faktisk definere en struktur lige i midten af ​​typedef
i stedet for at definere det separat, og derefter
gør en typedef af det.
Og det ville se ligesom her-- typedef struct bil,
åben krøllet klammeparentes, alle dine felt definitioner, luk krøllet tandbøjle, bil t.
Så det gamle navn er alt det i rød, er du bare definere strukturen
og navngive den på samme tid.
Og så det nye navn er bil understregning t.
Og så hvis vi begynder at bruge dette i kode, der tidligere jeg
kunne have sagt, struct bil MyCar semikolon.
Jamen jeg behøver ikke at gøre det længere.
Nu, hvor jeg har brugt typedef, jeg kan bare sige bil understregning t, MyCar.
Det er en meget kortere for en måde at gøre det, og i virkeligheden er det
kommer til at være en meget mere praktisk, især
som du begynder at bruge strukturer meget mere i din kode.
>> Jeg er Doug Lloyd.
Det er CS50.