1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 Doug LLOYD: Entón, se ten viu o noso vídeo sobre as estruturas, 3 00:00:07,220 --> 00:00:10,950 xa sabes que temos a capacidade de definir os nosos propios tipos de datos. 4 00:00:10,950 --> 00:00:14,530 Pero se ten estruturas utilizadas, xa sabe que, por veces, o uso destes tipos de datos 5 00:00:14,530 --> 00:00:16,446 realmente pode ser un pouco complicado, porque 6 00:00:16,446 --> 00:00:19,210 ten que usar a palabra chave struct cando estamos a traballar con eles-- 7 00:00:19,210 --> 00:00:21,257 coche struct ou estudante struct. 8 00:00:21,257 --> 00:00:23,090 Iso é unha chea de escribir se nós só queremos ter 9 00:00:23,090 --> 00:00:24,830 algo simple, como unha estrutura. 10 00:00:24,830 --> 00:00:26,390 Queremos have-- queremos ser capaz de traballar coas cousas 11 00:00:26,390 --> 00:00:29,350 un pouco máis abreviada, como int ou char, algo moi 12 00:00:29,350 --> 00:00:31,240 máis cómodo para escribir. 13 00:00:31,240 --> 00:00:33,100 >> Afortunadamente, hai unha forma de facelo en C, 14 00:00:33,100 --> 00:00:37,150 con algo chamado typedef, o que é un xeito de crear taquigrafia ou reescrito 15 00:00:37,150 --> 00:00:38,640 nomes para tipos de datos. 16 00:00:38,640 --> 00:00:40,720 Pode reescribir datos tipo que xa existen, 17 00:00:40,720 --> 00:00:43,970 ou pode escribir tipos de datos do seu propio país. 18 00:00:43,970 --> 00:00:46,890 >> O primeiro que fai é vostede definir un tipo de forma normal, 19 00:00:46,890 --> 00:00:52,271 e entón só o alias para algo else-- typedef antigo nome novo nome. 20 00:00:52,271 --> 00:00:53,520 Moi sinxelo, non? 21 00:00:53,520 --> 00:00:56,240 Así poderiamos typedef por exemplo, os datos que xa existe 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, a continuación, a partir de agora, despois de termos feito este tipo definition-- novo, 24 00:01:03,140 --> 00:01:07,570 que é xeralmente vai estar no máis alto dos nosos arquivos de punto C, ou nun arquivo de punto H 25 00:01:07,570 --> 00:01:10,590 separado, podemos só usar morder en todas partes 26 00:01:10,590 --> 00:01:12,180 que utilizaría sen sinatura char. 27 00:01:12,180 --> 00:01:14,300 Isto é moito máis curto que escribir. 28 00:01:14,300 --> 00:01:19,280 >> Na biblioteca de CS50, facemos isto-- nós typedef estrela de char como cadea. 29 00:01:19,280 --> 00:01:21,400 Porque abstraído aínda que a idea de punteiros. 30 00:01:21,400 --> 00:01:25,072 E o feito de que unha cadea é realmente un punteiro para o primeiro character-- 31 00:01:25,072 --> 00:01:26,780 un array de caracteres, porque é só 32 00:01:26,780 --> 00:01:29,863 tan confuso para obter a súa cabeza en torno a isso-- pero en realidade iso é o que nós facemos. 33 00:01:29,863 --> 00:01:35,140 E esta liña de código realmente existe en CS50 punto H typedef de char secuencia estrela, 34 00:01:35,140 --> 00:01:39,021 só para facer que un pouco menos incómodo de ter que tratar. 35 00:01:39,021 --> 00:01:41,520 Xa que xa viu, probablemente, un pouco do valor aquí, 36 00:01:41,520 --> 00:01:44,160 pero typedef convértese en gran cando combinada con estruturas, 37 00:01:44,160 --> 00:01:45,780 como me referín anteriormente. 38 00:01:45,780 --> 00:01:48,550 Estruturas teñen un nome de tipo de dúas palabras. 39 00:01:48,550 --> 00:01:52,020 E así poden ser realmente irritante crear variables deste tipo, 40 00:01:52,020 --> 00:01:56,310 ou [inaudível] de algo struct, o seu liñas pode só estar moi, moi longo. 41 00:01:56,310 --> 00:01:59,400 E así pode utilizar typedef para vir con algo moito máis curto. 42 00:01:59,400 --> 00:02:04,650 >> Entón, se eu definir un coche do seguinte xeito, eu teño miña definición dun coche struct car--, 43 00:02:04,650 --> 00:02:07,230 e logo abra chaveta, todo os dominios da estrutura, o meu 44 00:02:07,230 --> 00:02:11,030 preto chaveta, semi-colon-- despois de ter definido o meu tipo de datos, 45 00:02:11,030 --> 00:02:15,680 Podo typedef struct coche como subliñado coche t. 46 00:02:15,680 --> 00:02:19,670 E entón cando eu fixen iso, agora cada struct vez que usaría doutro xeito 47 00:02:19,670 --> 00:02:22,680 coche, eu só podo usar coche subliñado t. 48 00:02:22,680 --> 00:02:26,480 Isto é moito máis curto de unha forma de expresar esta idea desta estrutura 49 00:02:26,480 --> 00:02:28,530 que acaba de crear. 50 00:02:28,530 --> 00:02:33,620 >> Alternativamente, porque as estruturas son tan comunmente usado en typedef, 51 00:02:33,620 --> 00:02:37,980 hai um-- realmente pode definir o escriba entre o inicio eo fin. 52 00:02:37,980 --> 00:02:42,020 Así, a estrutura typedef é novo xeralmente typedef, antigo nome, nome novo, 53 00:02:42,020 --> 00:02:45,360 onde os nomes xa son tipo que creou. 54 00:02:45,360 --> 00:02:49,620 Pero realmente pode definir unha estrutura á dereita no medio do typedef 55 00:02:49,620 --> 00:02:51,760 en vez de ter que axustar Lo separado, e logo 56 00:02:51,760 --> 00:02:52,990 facer un typedef del. 57 00:02:52,990 --> 00:02:55,780 E que sería só como isto-- typedef struct coche, 58 00:02:55,780 --> 00:02:59,957 chaveta aberta, todo o seu campo definicións, preto chaveta, coche t. 59 00:02:59,957 --> 00:03:03,290 Así, o nome vello é todo este material no vermello, só está definindo a estrutura 60 00:03:03,290 --> 00:03:05,610 e nomeándose ao mesmo tempo. 61 00:03:05,610 --> 00:03:07,790 E entón o nome é subliñado coche t. 62 00:03:07,790 --> 00:03:10,150 E así se comezarmos a usar iso no código, eu anteriormente 63 00:03:10,150 --> 00:03:13,279 podería dicir, struct mycar coche e coma. 64 00:03:13,279 --> 00:03:14,820 Ben, eu non teño que facelo. 65 00:03:14,820 --> 00:03:20,265 Agora que eu usei o typedef, I pode simplemente dicir subliñado coche t, mycar. 66 00:03:20,265 --> 00:03:22,640 Isto é moito máis curto dun xeito para facelo e, de feito, é 67 00:03:22,640 --> 00:03:24,515 vai ser moito máis cómodo, especialmente 68 00:03:24,515 --> 00:03:27,730 como comezar a usar estruturas moito máis no seu código. 69 00:03:27,730 --> 00:03:28,810 >> Eu son Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Este é CS50. 71 00:03:30,640 --> 00:03:32,415