1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Więc jeśli masz widział nasz film na strukturach, 3 00:00:07,220 --> 00:00:10,950 wiesz już, że mamy Możliwość definiowania własnych typów danych. 4 00:00:10,950 --> 00:00:14,530 Ale jeśli już używanych struktur, wiesz że czasami przy użyciu tych typów danych 5 00:00:14,530 --> 00:00:16,446 rzeczywiście może być trochę kłopotliwe, bo my 6 00:00:16,446 --> 00:00:19,210 trzeba używać słowa kluczowego struct kiedy pracujesz z them-- 7 00:00:19,210 --> 00:00:21,257 Samochód struct lub student struct. 8 00:00:21,257 --> 00:00:23,090 To dużo, aby wpisać jeśli po prostu chcesz mieć 9 00:00:23,090 --> 00:00:24,830 coś prostego, jak struktury. 10 00:00:24,830 --> 00:00:26,390 Chcemy have-- chcemy być w stanie pracować z rzeczy 11 00:00:26,390 --> 00:00:29,350 trochę bardziej skróconą drogą, jak int lub char, coś a lot 12 00:00:29,350 --> 00:00:31,240 bardziej wygodne do pisania. 13 00:00:31,240 --> 00:00:33,100 >> Na szczęście, istnieje sposób, aby to zrobić w C, 14 00:00:33,100 --> 00:00:37,150 z czegoś, co nazywa typedef, która jest sposób tworzenia skrótów lub przepisany 15 00:00:37,150 --> 00:00:38,640 Nazwy typów danych. 16 00:00:38,640 --> 00:00:40,720 Możesz przepisać dane typy, które już istnieją, 17 00:00:40,720 --> 00:00:43,970 lub możesz napisać typy danych własnych. 18 00:00:43,970 --> 00:00:46,890 >> Pierwszą rzeczą, którą musisz zrobić, to cię określić typ w normalny sposób, 19 00:00:46,890 --> 00:00:52,271 a potem po prostu alias go do czegoś else-- typedef starą nazwę nową nazwę. 20 00:00:52,271 --> 00:00:53,520 Całkiem proste, prawda? 21 00:00:53,520 --> 00:00:56,240 Tak więc można było typedef np już istniejących danych 22 00:00:56,240 --> 00:01:00,266 typ unsigned char jako bajt. 23 00:01:00,266 --> 00:01:03,140 A następnie, od teraz, po mamy ponownie wykonane tego typu definition--, 24 00:01:03,140 --> 00:01:07,570 który zwykle będzie w górnej naszych dot plików C, lub w pliku dot H 25 00:01:07,570 --> 00:01:10,590 oddzielnie, możemy po prostu używać ugryźć wszędzie 26 00:01:10,590 --> 00:01:12,180 użylibyśmy unsigned char. 27 00:01:12,180 --> 00:01:14,300 To dużo krótszy pisać. 28 00:01:14,300 --> 00:01:19,280 >> W bibliotece CS50 jest, robimy this-- możemy typedef char gwiazdę jako ciąg. 29 00:01:19,280 --> 00:01:21,400 Ponieważ wydobywane stąd pomysł wskaźników. 30 00:01:21,400 --> 00:01:25,072 A fakt, że ciąg jest naprawdę wskaźnik do pierwszego character-- 31 00:01:25,072 --> 00:01:26,780 tablica znaków, bo to tylko 32 00:01:26,780 --> 00:01:29,863 tak skomplikowane, aby wokół twojej głowie that-- ale w tym, że to, co robimy. 33 00:01:29,863 --> 00:01:35,140 I ta linia kodu faktycznie istnieje w CS50 Dot H typedef char gwiazdkowy ciąg, 34 00:01:35,140 --> 00:01:39,021 po prostu zrobić, że trochę mniej uciążliwe mieć do czynienia. 35 00:01:39,021 --> 00:01:41,520 Już widziałem chyba Trochę wartości tutaj, 36 00:01:41,520 --> 00:01:44,160 ale typedef staje wielka w połączeniu ze strukturami 37 00:01:44,160 --> 00:01:45,780 jak wspomniałem wcześniej. 38 00:01:45,780 --> 00:01:48,550 Struktury mają nazwy typu dwa słowa. 39 00:01:48,550 --> 00:01:52,020 I tak może być naprawdę denerwujące do tworzenia tego typu zmiennych, 40 00:01:52,020 --> 00:01:56,310 lub [niesłyszalne] z struct coś, twój linie mogą po prostu bardzo, bardzo długo. 41 00:01:56,310 --> 00:01:59,400 A więc można używać typedef przyjść z czymś o wiele krótszy. 42 00:01:59,400 --> 00:02:04,650 >> Więc jeśli mogę zdefiniować samochód następująco, mam moja definicja car-- struct samochodu, 43 00:02:04,650 --> 00:02:07,230 a następnie otworzyć nawias klamrowy, wszystkie pola mojej konstrukcji, 44 00:02:07,230 --> 00:02:11,030 blisko nawias klamrowy, pół-colon-- po tym, jak zdefiniowano mój typ danych, 45 00:02:11,030 --> 00:02:15,680 Mogę typedef struct Samochód jak samochód podkreślenia t. 46 00:02:15,680 --> 00:02:19,670 A potem, kiedy zrobiłem, że teraz każda razem byłby inny sposób wykorzystywane struct 47 00:02:19,670 --> 00:02:22,680 samochód, mogę tylko używać samochodu podkreślenia t. 48 00:02:22,680 --> 00:02:26,480 To dużo krótszy o sposób wyrazić tę ideę tej struktury 49 00:02:26,480 --> 00:02:28,530 że właśnie stworzył. 50 00:02:28,530 --> 00:02:33,620 >> Alternatywnie, ponieważ struktury jest to powszechnie stosowane w typedef, 51 00:02:33,620 --> 00:02:37,980 tam A-- rzeczywiście można zdefiniować typ pomiędzy początkiem i końcem. 52 00:02:37,980 --> 00:02:42,020 Więc znów struktura typedef jest zwykle typedef, stara nazwa, nowa nazwa, 53 00:02:42,020 --> 00:02:45,360 których nazwy są już typy, które zostały utworzone. 54 00:02:45,360 --> 00:02:49,620 Ale rzeczywiście można określić strukturę w samym środku typedef 55 00:02:49,620 --> 00:02:51,760 Zamiast konieczności definiowania to oddzielnie, a następnie 56 00:02:51,760 --> 00:02:52,990 zrobić typedef to. 57 00:02:52,990 --> 00:02:55,780 I to będzie wyglądać podobnie jak this-- typedef struct samochodu, 58 00:02:55,780 --> 00:02:59,957 otwarty nawias klamrowy, wszystkie swoje pola definicje, w pobliżu samochodu nawias klamrowy, t. 59 00:02:59,957 --> 00:03:03,290 Więc stara nazwa to wszystkie rzeczy w czerwony, jesteś po prostu definiowanie struktury 60 00:03:03,290 --> 00:03:05,610 i nadając mu w tym samym czasie. 61 00:03:05,610 --> 00:03:07,790 I wtedy nowa nazwa Samochód podkreślenia jest t. 62 00:03:07,790 --> 00:03:10,150 I tak, jeśli zaczniemy używać to w kodzie, wcześniej I 63 00:03:10,150 --> 00:03:13,279 mógłby powiedzieć, struktura Samochód mycar średnik. 64 00:03:13,279 --> 00:03:14,820 Cóż, nie musisz tego robić więcej. 65 00:03:14,820 --> 00:03:20,265 Teraz, użyłem typedef, ja Można tylko powiedzieć, samochód podkreślenia t, mycar. 66 00:03:20,265 --> 00:03:22,640 To dużo krótszy sposób aby to zrobić, w rzeczywistości, to 67 00:03:22,640 --> 00:03:24,515 będzie dużo więcej wygodny, szczególnie 68 00:03:24,515 --> 00:03:27,730 jak zaczniesz używać struktur wiele więcej w kodzie. 69 00:03:27,730 --> 00:03:28,810 >> Jestem Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 To CS50. 71 00:03:30,640 --> 00:03:32,415