1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Quindi, se avete visto il nostro video su strutture, 3 00:00:07,220 --> 00:00:10,950 sai già che abbiamo il capacità di definire i nostri tipi di dati. 4 00:00:10,950 --> 00:00:14,530 Ma se hai strutture utilizzate, lo sai che a volte l'utilizzo di tali tipi di dati 5 00:00:14,530 --> 00:00:16,446 può effettivamente essere un po ' ingombrante perché noi 6 00:00:16,446 --> 00:00:19,210 è necessario utilizzare la parola chiave struct quando stiamo lavorando con them-- 7 00:00:19,210 --> 00:00:21,257 auto struct o studente struct. 8 00:00:21,257 --> 00:00:23,090 Questo è un sacco di digitare se vogliamo solo avere 9 00:00:23,090 --> 00:00:24,830 qualcosa di semplice, come una struttura. 10 00:00:24,830 --> 00:00:26,390 Vogliamo have-- vogliamo essere in grado di lavorare con le cose 11 00:00:26,390 --> 00:00:29,350 un po 'più stenografia, come int o char, qualcosa di molto 12 00:00:29,350 --> 00:00:31,240 più comodo da digitare. 13 00:00:31,240 --> 00:00:33,100 >> Per fortuna, c'è un modo per fare questo in C, 14 00:00:33,100 --> 00:00:37,150 con qualcosa chiamato typedef, che è un modo per creare stenografia o riscritta 15 00:00:37,150 --> 00:00:38,640 nomi per i tipi di dati. 16 00:00:38,640 --> 00:00:40,720 È possibile riscrivere i dati tipi che già esistono, 17 00:00:40,720 --> 00:00:43,970 o è possibile scrivere i tipi di dati della vostra. 18 00:00:43,970 --> 00:00:46,890 >> La prima cosa da fare è te definire un tipo in modo normale, 19 00:00:46,890 --> 00:00:52,271 e poi basta alias di a qualcosa else-- typedef vecchio nome nuovo nome. 20 00:00:52,271 --> 00:00:53,520 Abbastanza semplice, giusto? 21 00:00:53,520 --> 00:00:56,240 Così potremmo typedef per esempio, i dati già esistenti 22 00:00:56,240 --> 00:01:00,266 tipo di unsigned char come byte. 23 00:01:00,266 --> 00:01:03,140 E poi, d'ora in poi, dopo che abbiamo fatto questo tipo definition-- di nuovo, 24 00:01:03,140 --> 00:01:07,570 che di solito sta per essere al top dei nostri file punto C, o in un file di punti H 25 00:01:07,570 --> 00:01:10,590 a parte, possiamo solo utilizzare morso ovunque 26 00:01:10,590 --> 00:01:12,180 avremmo usato unsigned char. 27 00:01:12,180 --> 00:01:14,300 Questo è molto più breve di digitare. 28 00:01:14,300 --> 00:01:19,280 >> Nella biblioteca di CS50, facciamo questo-- noi typedef stella char come stringa. 29 00:01:19,280 --> 00:01:21,400 Perché noi Sottratto via l'idea di puntatori. 30 00:01:21,400 --> 00:01:25,072 E il fatto che una stringa è veramente un puntatore al primo character-- 31 00:01:25,072 --> 00:01:26,780 un array di caratteri, perché è solo 32 00:01:26,780 --> 00:01:29,863 così confusa per ottenere la testa intorno che-- ma in realtà questo è quello che facciamo. 33 00:01:29,863 --> 00:01:35,140 E questa riga di codice realmente esiste a stella stringa char CS50 punto H typedef, 34 00:01:35,140 --> 00:01:39,021 solo per fare un po 'meno che scomodo dover affrontare. 35 00:01:39,021 --> 00:01:41,520 Già avete visto probabilmente un po 'di valore qui, 36 00:01:41,520 --> 00:01:44,160 ma typedef diventa grande quando combinato con strutture, 37 00:01:44,160 --> 00:01:45,780 come ho accennato in precedenza. 38 00:01:45,780 --> 00:01:48,550 Strutture hanno un nome di tipo due parole. 39 00:01:48,550 --> 00:01:52,020 E in modo che possano essere davvero fastidioso creare variabili di quel tipo, 40 00:01:52,020 --> 00:01:56,310 o [incomprensibile] di struct qualcosa, la tua linee possono solo ottenere molto, molto lungo. 41 00:01:56,310 --> 00:01:59,400 E così è possibile utilizzare typedef a venire con qualcosa di molto più breve. 42 00:01:59,400 --> 00:02:04,650 >> Quindi, se io definisco una macchina come segue, ho la mia definizione di una vettura struct car--, 43 00:02:04,650 --> 00:02:07,230 e quindi aprire parentesi graffa, tutto campi della mia struttura, 44 00:02:07,230 --> 00:02:11,030 chiudere parentesi graffa, semi-colon-- dopo ho definito il mio tipo di dati, 45 00:02:11,030 --> 00:02:15,680 Posso typedef struct auto come auto di sottolineatura t. 46 00:02:15,680 --> 00:02:19,670 E poi quando l'ho già fatto, ora ogni struct tempo avrei altrimenti utilizzati 47 00:02:19,670 --> 00:02:22,680 macchina, posso solo usare auto sottolineatura t. 48 00:02:22,680 --> 00:02:26,480 Questo è molto più breve di un modo per esprimere questa idea di questa struttura 49 00:02:26,480 --> 00:02:28,530 che ho appena creato. 50 00:02:28,530 --> 00:02:33,620 >> In alternativa, perché le strutture vengono così comunemente utilizzati in typedef, 51 00:02:33,620 --> 00:02:37,980 c'è a-- si può effettivamente definire il inserire tra l'inizio e la fine. 52 00:02:37,980 --> 00:02:42,020 Quindi la struttura typedef è di nuovo solitamente typedef, vecchio nome, il nuovo nome, 53 00:02:42,020 --> 00:02:45,360 dove i nomi sono già tipi che hai creato. 54 00:02:45,360 --> 00:02:49,620 Ma in realtà si può definire una struttura proprio nel bel mezzo della typedef 55 00:02:49,620 --> 00:02:51,760 invece di dover definire separatamente, e poi 56 00:02:51,760 --> 00:02:52,990 fare un typedef di esso. 57 00:02:52,990 --> 00:02:55,780 E che sarebbe guardare come questo-- auto struct typedef, 58 00:02:55,780 --> 00:02:59,957 parentesi graffa aperta, tutto il vostro campo definizioni, vicino parentesi graffa, auto t. 59 00:02:59,957 --> 00:03:03,290 Così il vecchio nome è tutta quella roba in rosso, sei solo la definizione della struttura 60 00:03:03,290 --> 00:03:05,610 e chiamandolo allo stesso tempo. 61 00:03:05,610 --> 00:03:07,790 E poi il nuovo nome è auto sottolineatura t. 62 00:03:07,790 --> 00:03:10,150 E così se cominciamo ad utilizzare questo in codice, precedentemente I 63 00:03:10,150 --> 00:03:13,279 avrebbe detto, struct auto MyCar e virgola. 64 00:03:13,279 --> 00:03:14,820 Beh io non devo più farlo. 65 00:03:14,820 --> 00:03:20,265 Ora che ho usato il typedef, io può solo dire auto sottolineatura t, MyCar. 66 00:03:20,265 --> 00:03:22,640 Questo è molto più breve di un modo per farlo, e in effetti, è 67 00:03:22,640 --> 00:03:24,515 sta per essere molto più conveniente, soprattutto 68 00:03:24,515 --> 00:03:27,730 come si inizia ad utilizzare le strutture molto di più nel codice. 69 00:03:27,730 --> 00:03:28,810 >> Sono Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Questo è CS50. 71 00:03:30,640 --> 00:03:32,415