DOUG LLOYD: Então, se você tem viu o nosso vídeo sobre as estruturas,
você já sabe que nós temos a capacidade de definir os nossos próprios tipos de dados.
Mas se você tem estruturas utilizadas, você sabe que, por vezes, o uso desses tipos de dados
pode realmente ser um pouco complicado, porque nós
tem que usar a palavra-chave struct quando estamos trabalhando com eles--
carro struct ou estudante struct.
Isso é um monte de digitar se nós apenas queremos ter
algo simples, como uma estrutura.
Queremos have-- queremos ser capaz de trabalhar com as coisas
um pouco mais abreviada, como int ou char, algo muito
mais conveniente para digitar.
>> Felizmente, há uma maneira de fazer isso em C,
com algo chamado typedef, o que é uma maneira de criar taquigrafia ou reescrito
nomes para tipos de dados.
Você pode reescrever dados tipos que já existem,
ou você pode escrever tipos de dados de seu próprio país.
>> A primeira coisa que você faz é você definir um tipo de uma forma normal,
e então você somente o alias para algo else-- typedef antigo nome novo nome.
Bastante simples, certo?
Assim nós poderíamos typedef por exemplo, os dados já existente
tipo de unsigned char como byte.
E, em seguida, a partir de agora, depois de termos feito este tipo definition-- novamente,
que é geralmente vai estar no topo de nossos arquivos de ponto C, ou em um arquivo de ponto H
separadamente, podemos apenas usar morder em todos os lugares
que teria utilizado sem assinatura char.
Isso é muito mais curto do que digitar.
>> Na biblioteca de CS50, fazemos isto-- nós typedef estrela de char como string.
Porque nós abstraído embora a idéia de ponteiros.
E o fato de que uma string é realmente um ponteiro para o primeiro character--
um array de caracteres, porque é apenas
tão confuso para obter a sua cabeça em torno de isso-- mas na verdade isso é o que nós fazemos.
E esta linha de código realmente existe em CS50 ponto H typedef de char seqüência estrela,
apenas para fazer que um pouco menos incómodo de ter de lidar.
Já que você já viu, provavelmente, um pouco do valor aqui,
mas typedef torna-se grande quando combinada com estruturas,
como me referi anteriormente.
Estruturas têm um nome do tipo de duas palavras.
E assim eles podem ser realmente irritante criar variáveis ​​desse tipo,
ou [inaudível] de algo struct, o seu linhas pode apenas ficar muito, muito longo.
E assim você pode usar typedef para vir com algo muito mais curto.
>> Então, se eu definir um carro da seguinte forma, eu tenho minha definição de um carro struct car--,
e em seguida, abra chaveta, todos os domínios da estrutura, o meu
perto chaveta, semi-colon-- depois de eu ter definido o meu tipo de dados,
Eu posso typedef struct carro como sublinhado carro t.
E então quando eu fiz isso, agora cada struct vez que eu teria usado de outra forma
carro, eu só posso usar carro sublinhado t.
Isso é muito mais curto de uma maneira de expressar essa idéia desta estrutura
que acabou de criar.
>> Alternativamente, porque as estruturas são tão comumente usado em typedef,
há um-- você pode realmente definir o digite entre o início eo fim.
Assim, a estrutura typedef é novamente geralmente typedef, antigo nome, nome novo,
onde os nomes já são tipos que você criou.
Mas você pode realmente definir uma estrutura à direita no meio do typedef
em vez de ter de definir -lo separadamente, e em seguida
fazer um typedef dele.
E que ficaria apenas como isto-- typedef struct carro,
chaveta aberta, todo o seu campo definições, perto chaveta, carro t.
Assim, o nome velho é todo esse material no vermelho, você está apenas definindo a estrutura
e nomeando-o ao mesmo tempo.
E então o novo nome é sublinhado carro t.
E assim se começarmos a usar isso no código, eu anteriormente
poderia ter dito, struct mycar carro-e-vírgula.
Bem, eu não tenho que fazer isso.
Agora que eu usei o typedef, I pode simplesmente dizer sublinhado carro t, mycar.
Isso é muito mais curto de uma maneira para fazê-lo e, de fato, é
vai ser muito mais conveniente, especialmente
como você começar a usar estruturas muito mais em seu código.
>> Eu sou Doug Lloyd.
Este é CS50.