DOUG LLOYD: Så hvis du har sett vår video på konstruksjoner,
du allerede vet at vi har muligheten til å definere egne datatyper.
Men hvis du har brukt strukturer, vet du at noen ganger bruker de datatyper
faktisk kan være litt tungvint fordi vi
må bruke struct søkeord når vi jobber med them--
struct bil eller struct student.
Det er mye å skrive hvis vi bare vil ha
noe enkelt, som en struktur.
Vi ønsker å have-- vi ønsker å kunne arbeide med ting
litt mer stenografi måte, som int eller røye, noe mye
mer praktisk å skrive.
>> Heldigvis finnes det en måte å gjøre dette i C,
med noe som kalles typedef, som er en måte å skape stenografi eller omskrevet
navn for datatyper.
Du kan skrive data typer som allerede finnes,
eller du kan skrive datatyper av dine egne.
>> Det første du gjør er du definere en type på vanlig måte,
og så du bare alias den til noe else-- typedef gamle navnet nytt navn.
Ganske grei, ikke sant?
Slik at vi kunne typedef for eksempel den allerede eksisterende data
type unsigned char som byte.
Og så, fra nå av, etter at vi har gjort denne type definition-- igjen,
som vanligvis kommer til å være på toppen av våre dot C-filer, eller i en prikk H fil
separat, kan vi bare bruker bite overalt
vi ville ha brukt unsigned char.
Det er mye kortere å skrive.
>> I CS50 bibliotek, gjør vi dette-- vi typedef røye stjerne som streng.
Fordi vi abstrahert bort ideen om pekere.
Og det faktum at en streng er virkelig en peker til den første character--
en rekke tegn, fordi det er bare
så forvirrende å få hodet rundt at-- men faktisk det er hva vi gjør.
Og denne linjen med kode faktisk eksisterer i CS50 dot H typedef røye stjerners streng,
bare for å gjøre det litt mindre tungvint å måtte forholde seg til.
Allerede du har sett sannsynligvis en litt av verdien her,
men typedef blir stor når kombinert med strukturer
som jeg antydet tidligere.
Strukturer har en to-ord typenavn.
Og slik at de kan være veldig irriterende for å lage variabler av denne typen,
eller [uhørbart] av struct noe, din linjer kan bare bli veldig, veldig lang.
Og så du kan bruke typedef å komme opp med noe mye kortere.
>> Så hvis jeg definerer en bil som følger, har jeg min definisjon av en car-- struct bil,
og deretter åpne klammeparentes, alle innen min struktur,
nær klammeparentes, semi-colon-- etter at jeg har definert min datatype,
Jeg kan typedef struct bil som bil strek t.
Og så når jeg har gjort det, nå hver gang jeg ellers ville ha brukt struct
bil, kan jeg bare bruke bilen strek t.
Det er mye kortere på en måte å uttrykke denne ideen om denne strukturen
at jeg nettopp opprettet.
>> Alternativt fordi strukturer blir så vanligvis brukes i typedef,
det er a-- du faktisk kan definere skriver i mellom starten og slutten.
Så typedef struktur igjen er vanligvis typedef, gamle navn, nytt navn,
hvor navnene er allerede typer som du har opprettet.
Men du kan faktisk definere en struktur rett i midten av typedef
i stedet for å måtte definere det separat, og deretter
gjøre en typedef av det.
Og det ville se ut akkurat som dette-- typedef struct bil,
åpen klammeparentes, alle av feltet definisjoner, nær klammeparentes, bil t.
Så det gamle navnet er alle de greiene i rød, du er bare å definere strukturen
og navngi den på samme tid.
Og så det nye navnet er bilen strek t.
Og så hvis vi begynner å bruke dette i kode, I tidligere
kunne ha sagt, struct bil MyCar semikolon.
Vel, jeg trenger ikke å gjøre det lenger.
Nå som jeg har brukt typedef, jeg kan bare si bil strek t, MyCar.
Det er mye kortere på en måte å gjøre det, og faktisk er det
kommer til å være mye mer praktisk, spesielt
når du begynner å bruke strukturer mye mer i koden.
>> Jeg er Doug Lloyd.
Dette er CS50.