DOUG LLOYD: Så om du har sett vår video på strukturer,
du redan vet att vi har möjlighet att definiera egna datatyper.
Men om du har använt strukturer, vet du att ibland använda dessa datatyper
kan faktiskt vara lite besvärlig eftersom vi
måste använda struct nyckelordet När vi arbetar med them--
struct bil eller struct student.
Det är en hel del att skriva Om vi ​​vill bara ha
något enkelt, som en struktur.
Vi vill have-- vi vill kunna arbeta med saker
lite mer förkortning sätt, som int eller röding, något mycket
mer praktiskt att skriva.
>> Lyckligtvis finns det ett sätt att göra detta i C,
med något som kallas typedef, som är ett sätt att skapa en förkortning eller skrivas
namn för datatyper.
Du kan skriva uppgifter typer som redan finns,
eller så kan du skriva datatyper i ditt eget.
>> Det första du gör är att du definiera en typ på vanligt sätt,
och då du bara alias det till något else-- typedef gamla namnet nytt namn.
Ganska enkelt, eller hur?
Så vi kunde typedef till exempel, den redan befintliga data
typ av unsigned char som byte.
Och sedan, från och med nu, när vi har gjort denna typ definition-- igen,
som vanligtvis kommer att vara på toppen våra punkt C-filer, eller i en punkt H fil
separat, vi kan bara använda bita allt
vi skulle ha använt unsigned char.
Det är en mycket kortare att skriva.
>> I CS50 bibliotek, gör vi this-- Vi typedef röding stjärna som sträng.
Eftersom vi abstraherade bort idén av pekare.
Och det faktum att en sträng är verkligen en pekare till den första character--
en array av tecken, eftersom det är bara
så förvirrande att få huvudet runt that-- men i själva verket det är vad vi gör.
Och här kodraden faktiskt existerar i CS50 dot H typedef röding stjärna sträng,
bara för att göra det lite mindre besvärliga att ha att göra med.
Redan du har sett förmodligen en lite av värde här,
men typedef blir stor när de kombineras med strukturer,
som jag nämnt tidigare.
Strukturer har en två-ord typnamnet.
Och så de kan bli riktigt irriterande att skapa variabler av denna typ,
eller [OHÖRBAR] av struct något, din linjer kan bara bli riktigt, riktigt lång.
Och så du kan använda typedef att komma upp med något mycket kortare.
>> Så om jag definierar en bil som följer, har jag min definition av en car-- struct bil,
och sedan öppna klammerparentes, alla områdena min struktur,
nära klammerparentes, halv colon-- efter att jag har definierat min datatyp,
Jag kan typedef struct bil som bil streck t.
Och sen när jag har gjort det, nu varje tid jag annars skulle ha använt struct
bil, jag kan bara använda bilen streck t.
Det är en mycket kortare ett sätt att uttrycka denna idé om denna struktur
att jag just har skapat.
>> Alternativt, eftersom strukturer är så vanligt förekommande i typedef,
det finns en-- du faktiskt kan definiera skriva in mellan början och slut.
Så typedef strukturen återigen är vanligtvis typedef, gamla namnet, nytt namn,
där namnen är redan typer som du har skapat.
Men du kan faktiskt definiera en struktur rätt i mitten av typedef
i stället för att behöva definiera det separat, och sedan
gör en typedef det.
Och det skulle se ut precis som this-- typedef struct bil,
öppna klammerparentes, alla ditt område definitioner, nära klammerparentes, bil t.
Så det gamla namnet är allt det där i röd, är du bara definierar strukturen
och namnge den samtidigt.
Och sedan det nya namnet är bil streck t.
Och så om vi börjar använda detta i koden, tidigare jag
kunde ha sagt, struct bil MyCar semikolon.
Tja jag inte behöver göra det längre.
Nu när jag har använt typedef, jag kan bara säga bil streck t, MyCar.
Det är en mycket kortare på ett sätt att göra det, och i själva verket är det
kommer att bli en mycket mer praktiskt, särskilt
när du börjar använda strukturer mycket mer i din kod.
>> Jag är Doug Lloyd.
Detta är CS50.