1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Deci, dacă ați vazut videoclipul nostru pe structuri, 3 00:00:07,220 --> 00:00:10,950 știți deja că avem capacitatea de a defini noastre tipuri de date proprii. 4 00:00:10,950 --> 00:00:14,530 Dar dacă ai structuri utilizate, știi că, uneori, utilizarea acestor tipuri de date 5 00:00:14,530 --> 00:00:16,446 poate fi de fapt un pic greoaie pentru că am 6 00:00:16,446 --> 00:00:19,210 trebuie să utilizeze cuvântul cheie struct când lucrăm cu them-- 7 00:00:19,210 --> 00:00:21,257 masina struct sau student struct. 8 00:00:21,257 --> 00:00:23,090 Asta e mult de tip dacă vrem doar să aibă 9 00:00:23,090 --> 00:00:24,830 ceva simplu, ca o structură. 10 00:00:24,830 --> 00:00:26,390 Vrem să have-- vrem să fie capabil să lucreze cu lucruri 11 00:00:26,390 --> 00:00:29,350 un pic mai mult stenografie, cum ar fi Int sau char, ceva o mulțime 12 00:00:29,350 --> 00:00:31,240 mai convenabil de tip. 13 00:00:31,240 --> 00:00:33,100 >> Din fericire, există un mod de a face acest lucru în C, 14 00:00:33,100 --> 00:00:37,150 cu ceva numit typedef, care este o modalitate de a crea stenografie sau rescrise 15 00:00:37,150 --> 00:00:38,640 nume pentru tipurile de date. 16 00:00:38,640 --> 00:00:40,720 Puteți rescrie date tipuri care există deja, 17 00:00:40,720 --> 00:00:43,970 sau puteți scrie tipuri de date proprii. 18 00:00:43,970 --> 00:00:46,890 >> Primul lucru pe care îl faci este tine defini un tip de în mod normal, 19 00:00:46,890 --> 00:00:52,271 și apoi doar alias la ceva else-- typedef nume vechi nume nou. 20 00:00:52,271 --> 00:00:53,520 Destul de simplu, nu? 21 00:00:53,520 --> 00:00:56,240 Deci, am putea typedef de exemplu, datele deja existente 22 00:00:56,240 --> 00:01:00,266 tip de unsigned char ca byte. 23 00:01:00,266 --> 00:01:03,140 Și apoi, de acum înainte, după ce ne-am a făcut acest tip definition-- din nou, 24 00:01:03,140 --> 00:01:07,570 care este, de obicei va fi la partea de sus de dot dosarele noastre C, sau într-un fișier H punct 25 00:01:07,570 --> 00:01:10,590 separat, putem doar folosesc musca de pretutindeni 26 00:01:10,590 --> 00:01:12,180 ne-ar fi folosit char nesemnate. 27 00:01:12,180 --> 00:01:14,300 Asta e mult mai scurtă de tip. 28 00:01:14,300 --> 00:01:19,280 >> In biblioteca lui CS50, facem asta: am typedef char stele ca șir. 29 00:01:19,280 --> 00:01:21,400 Pentru că noi captate departe ideea de indicii. 30 00:01:21,400 --> 00:01:25,072 Iar faptul că un șir este într-adevăr un pointer la primul character-- 31 00:01:25,072 --> 00:01:26,780 o serie de caractere, pentru că e doar 32 00:01:26,780 --> 00:01:29,863 atât de confuz pentru a obține în jurul valorii de cap that-- dar, de fapt asta e ceea ce facem. 33 00:01:29,863 --> 00:01:35,140 Și această linie de cod, de fapt există în șir stele char CS50 punct H typedef, 34 00:01:35,140 --> 00:01:39,021 doar pentru a face ca un pic mai puțin greoaie de a avea de a face cu. 35 00:01:39,021 --> 00:01:41,520 Deja le-ați văzut, probabil, o pic din valoarea aici, 36 00:01:41,520 --> 00:01:44,160 dar typedef devine mare atunci când sunt combinate cu structuri, 37 00:01:44,160 --> 00:01:45,780 așa cum am făcut aluzie la mai devreme. 38 00:01:45,780 --> 00:01:48,550 Structuri au un nume de tip două cuvânt. 39 00:01:48,550 --> 00:01:52,020 Și astfel încât să poată fi foarte enervant pentru a crea variabilele de acest tip, 40 00:01:52,020 --> 00:01:56,310 sau [abia auzit] de ceva struct, dvs. Liniile pot obține doar foarte, foarte mult timp. 41 00:01:56,310 --> 00:01:59,400 Și astfel încât să puteți folosi typedef pentru a veni cu ceva mult mai scurtă. 42 00:01:59,400 --> 00:02:04,650 >> Deci, dacă am defini o mașină, după cum urmează, am definiția mea de o masina struct car--, 43 00:02:04,650 --> 00:02:07,230 și apoi deschideți bretele buclat, toate domeniile de structura mea, 44 00:02:07,230 --> 00:02:11,030 aproape bretele buclat, semi-colon-- după ce am definit genul meu de date, 45 00:02:11,030 --> 00:02:15,680 Pot typedef struct masina ca subliniere auto T. 46 00:02:15,680 --> 00:02:19,670 Și apoi, când am făcut asta, acum fiecare struct timp mi-ar fi folosit în caz contrar 47 00:02:19,670 --> 00:02:22,680 masina, pot folosi doar mașina subliniere T. 48 00:02:22,680 --> 00:02:26,480 Aceasta este o mult mai scurtă de un mod de a exprima această idee a acestei structuri 49 00:02:26,480 --> 00:02:28,530 care tocmai am creat-o. 50 00:02:28,530 --> 00:02:33,620 >> Alternativ, deoarece structurile sunt atât de frecvent utilizate în typedef, 51 00:02:33,620 --> 00:02:37,980 e un-- Puteți defini, de fapt, tastați în între începutul și sfârșitul. 52 00:02:37,980 --> 00:02:42,020 Deci structura typedef este din nou de obicei typedef, numele vechi, nume noi, 53 00:02:42,020 --> 00:02:45,360 în cazul în care numele sunt deja tipuri care le-ați creat. 54 00:02:45,360 --> 00:02:49,620 Dar puteți defini de fapt o structură chiar în mijlocul typedef 55 00:02:49,620 --> 00:02:51,760 în loc de a trebui să definească l separat, și apoi 56 00:02:51,760 --> 00:02:52,990 face un typedef de ea. 57 00:02:52,990 --> 00:02:55,780 Și că ar arăta la fel ca astea-- typedef struct masina, 58 00:02:55,780 --> 00:02:59,957 bretele buclat deschis, toate de domeniul tau definiții, aproape bretele ondulat, masina T. 59 00:02:59,957 --> 00:03:03,290 Deci vechiul nume este tot ceea ce lucruri din roșu, esti doar definirea structurii 60 00:03:03,290 --> 00:03:05,610 și numindu-l în același timp. 61 00:03:05,610 --> 00:03:07,790 Și apoi noul nume este subliniere masina T. 62 00:03:07,790 --> 00:03:10,150 Și așa, dacă vom începe să utilizeze acest cod în, anterior am 63 00:03:10,150 --> 00:03:13,279 ar fi putut spune, struct masina MyCar semi-colon. 64 00:03:13,279 --> 00:03:14,820 Ei bine, nu mai trebuie să faci asta. 65 00:03:14,820 --> 00:03:20,265 Acum că am folosit typedef, am poate spune doar subliniere masina t, MyCar. 66 00:03:20,265 --> 00:03:22,640 Aceasta este o mult mai scurtă de un mod a face acest lucru, și, de fapt, este 67 00:03:22,640 --> 00:03:24,515 va fi mult mai convenabil, în special 68 00:03:24,515 --> 00:03:27,730 cum de a începe să utilizați structuri mult mai mult în cod. 69 00:03:27,730 --> 00:03:28,810 >> Sunt Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Acest lucru este CS50. 71 00:03:30,640 --> 00:03:32,415