1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Então, se você tem viu o nosso vídeo sobre as estruturas, 3 00:00:07,220 --> 00:00:10,950 você já sabe que nós temos a capacidade de definir os nossos próprios tipos de dados. 4 00:00:10,950 --> 00:00:14,530 Mas se você tem estruturas utilizadas, você sabe que, por vezes, o uso desses tipos de dados 5 00:00:14,530 --> 00:00:16,446 pode realmente ser um pouco complicado, porque nós 6 00:00:16,446 --> 00:00:19,210 tem que usar a palavra-chave struct quando estamos trabalhando com eles-- 7 00:00:19,210 --> 00:00:21,257 carro struct ou estudante struct. 8 00:00:21,257 --> 00:00:23,090 Isso é um monte de digitar se nós apenas queremos ter 9 00:00:23,090 --> 00:00:24,830 algo simples, como uma estrutura. 10 00:00:24,830 --> 00:00:26,390 Queremos have-- queremos ser capaz de trabalhar com as coisas 11 00:00:26,390 --> 00:00:29,350 um pouco mais abreviada, como int ou char, algo muito 12 00:00:29,350 --> 00:00:31,240 mais conveniente para digitar. 13 00:00:31,240 --> 00:00:33,100 >> Felizmente, há uma maneira de fazer isso em C, 14 00:00:33,100 --> 00:00:37,150 com algo chamado typedef, o que é uma maneira de criar taquigrafia ou reescrito 15 00:00:37,150 --> 00:00:38,640 nomes para tipos de dados. 16 00:00:38,640 --> 00:00:40,720 Você pode reescrever dados tipos que já existem, 17 00:00:40,720 --> 00:00:43,970 ou você pode escrever tipos de dados de seu próprio país. 18 00:00:43,970 --> 00:00:46,890 >> A primeira coisa que você faz é você definir um tipo de uma forma normal, 19 00:00:46,890 --> 00:00:52,271 e então você somente o alias para algo else-- typedef antigo nome novo nome. 20 00:00:52,271 --> 00:00:53,520 Bastante simples, certo? 21 00:00:53,520 --> 00:00:56,240 Assim nós poderíamos typedef por exemplo, os dados já existente 22 00:00:56,240 --> 00:01:00,266 tipo de unsigned char como byte. 23 00:01:00,266 --> 00:01:03,140 E, em seguida, a partir de agora, depois de termos feito este tipo definition-- novamente, 24 00:01:03,140 --> 00:01:07,570 que é geralmente vai estar no topo de nossos arquivos de ponto C, ou em um arquivo de ponto H 25 00:01:07,570 --> 00:01:10,590 separadamente, podemos apenas usar morder em todos os lugares 26 00:01:10,590 --> 00:01:12,180 que teria utilizado sem assinatura char. 27 00:01:12,180 --> 00:01:14,300 Isso é muito mais curto do que digitar. 28 00:01:14,300 --> 00:01:19,280 >> Na biblioteca de CS50, fazemos isto-- nós typedef estrela de char como string. 29 00:01:19,280 --> 00:01:21,400 Porque nós abstraído embora a idéia de ponteiros. 30 00:01:21,400 --> 00:01:25,072 E o fato de que uma string é realmente um ponteiro para o primeiro character-- 31 00:01:25,072 --> 00:01:26,780 um array de caracteres, porque é apenas 32 00:01:26,780 --> 00:01:29,863 tão confuso para obter a sua cabeça em torno de isso-- mas na verdade isso é o que nós fazemos. 33 00:01:29,863 --> 00:01:35,140 E esta linha de código realmente existe em CS50 ponto H typedef de char seqüência estrela, 34 00:01:35,140 --> 00:01:39,021 apenas para fazer que um pouco menos incómodo de ter de lidar. 35 00:01:39,021 --> 00:01:41,520 Já que você já viu, provavelmente, um pouco do valor aqui, 36 00:01:41,520 --> 00:01:44,160 mas typedef torna-se grande quando combinada com estruturas, 37 00:01:44,160 --> 00:01:45,780 como me referi anteriormente. 38 00:01:45,780 --> 00:01:48,550 Estruturas têm um nome do tipo de duas palavras. 39 00:01:48,550 --> 00:01:52,020 E assim eles podem ser realmente irritante criar variáveis ​​desse tipo, 40 00:01:52,020 --> 00:01:56,310 ou [inaudível] de algo struct, o seu linhas pode apenas ficar muito, muito longo. 41 00:01:56,310 --> 00:01:59,400 E assim você pode usar typedef para vir com algo muito mais curto. 42 00:01:59,400 --> 00:02:04,650 >> Então, se eu definir um carro da seguinte forma, eu tenho minha definição de um carro struct car--, 43 00:02:04,650 --> 00:02:07,230 e em seguida, abra chaveta, todos os domínios da estrutura, o meu 44 00:02:07,230 --> 00:02:11,030 perto chaveta, semi-colon-- depois de eu ter definido o meu tipo de dados, 45 00:02:11,030 --> 00:02:15,680 Eu posso typedef struct carro como sublinhado carro t. 46 00:02:15,680 --> 00:02:19,670 E então quando eu fiz isso, agora cada struct vez que eu teria usado de outra forma 47 00:02:19,670 --> 00:02:22,680 carro, eu só posso usar carro sublinhado t. 48 00:02:22,680 --> 00:02:26,480 Isso é muito mais curto de uma maneira de expressar essa idéia desta estrutura 49 00:02:26,480 --> 00:02:28,530 que acabou de criar. 50 00:02:28,530 --> 00:02:33,620 >> Alternativamente, porque as estruturas são tão comumente usado em typedef, 51 00:02:33,620 --> 00:02:37,980 há um-- você pode realmente definir o digite entre o início eo fim. 52 00:02:37,980 --> 00:02:42,020 Assim, a estrutura typedef é novamente geralmente typedef, antigo nome, nome novo, 53 00:02:42,020 --> 00:02:45,360 onde os nomes já são tipos que você criou. 54 00:02:45,360 --> 00:02:49,620 Mas você pode realmente definir uma estrutura à direita no meio do typedef 55 00:02:49,620 --> 00:02:51,760 em vez de ter de definir -lo separadamente, e em seguida 56 00:02:51,760 --> 00:02:52,990 fazer um typedef dele. 57 00:02:52,990 --> 00:02:55,780 E que ficaria apenas como isto-- typedef struct carro, 58 00:02:55,780 --> 00:02:59,957 chaveta aberta, todo o seu campo definições, perto chaveta, carro t. 59 00:02:59,957 --> 00:03:03,290 Assim, o nome velho é todo esse material no vermelho, você está apenas definindo a estrutura 60 00:03:03,290 --> 00:03:05,610 e nomeando-o ao mesmo tempo. 61 00:03:05,610 --> 00:03:07,790 E então o novo nome é sublinhado carro t. 62 00:03:07,790 --> 00:03:10,150 E assim se começarmos a usar isso no código, eu anteriormente 63 00:03:10,150 --> 00:03:13,279 poderia ter dito, struct mycar carro-e-vírgula. 64 00:03:13,279 --> 00:03:14,820 Bem, eu não tenho que fazer isso. 65 00:03:14,820 --> 00:03:20,265 Agora que eu usei o typedef, I pode simplesmente dizer sublinhado carro t, mycar. 66 00:03:20,265 --> 00:03:22,640 Isso é muito mais curto de uma maneira para fazê-lo e, de fato, é 67 00:03:22,640 --> 00:03:24,515 vai ser muito mais conveniente, especialmente 68 00:03:24,515 --> 00:03:27,730 como você começar a usar estruturas muito mais em seu código. 69 00:03:27,730 --> 00:03:28,810 >> Eu sou Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Este é CS50. 71 00:03:30,640 --> 00:03:32,415