>> COLUNA 1: Vamos escrever um programa que solicita ao usuário os nomes e
casas de três alunos.
Agora, para armazenar os nomes e as casas nós poderíamos usar, o que, seis variáveis.
Três cordas para os nomes, e outra três cordas para as casas,
mas já sabemos que podemos limpar que o código usando matrizes em vez disso,
por exemplo uma matriz de tamanho 3 para a três nomes, e um outro conjunto de
tamanho 3 para as casas.
Mas acontece que nós podemos limpar isso ainda mais longe, e realmente manter os
nomes e casas em conjunto, de modo que um nome do aluno e sua casa
são de alguma forma encapsulada, por assim falar, para a mesma variável.
>> Para fazer isso, porém, precisamos de declarar o nosso próprio tipo de dados, nosso próprio tipo em C,
que os autores do C não necessariamente acho que de anos atrás.
Para fazer isso, podemos usar a palavra-chave typedef, juntamente com o
outra struct palavra-chave.
Vamos dar uma olhada.
Dentro de structs.h, eu já chegado começou por
incluindo a biblioteca de CS50.
Estou próximo vai digitar typedef struct, e, em seguida, uma chaveta.
Dentro da estrutura, eu vou especificar que um aluno deve ter um
string chamada nome, e outro string chamada casa.
Vou então fechar os colchetes, e especificar que o nome de
este novo tipo de dados deve ser estudante.
Em outras palavras, através desta sintaxe tenho declarou um novo tipo de meu próprio dados
que não existia um momento atrás, e dentro deste tipo de dados são dois dados
campos ou membros de dados, um chamado nome, uma chamada local, ambos dos quais
são do tipo string.
>> Vamos agora usar esse tipo em um programa real.
Em structs0.c, eu comecei da mesma forma eu mesmo já começou com alguns
código clichê, e eu estou agora vai usar esses dados
tipo estudante, como se segue.
Vou primeiro para declarar uma matriz do tipo de estudante, eu vou
chamar os alunos de matriz -
plural -
e eu vou especificar que o seu tamanho será três, que, notem, é o valor da
as constantes ESTUDANTES -
em todas as capitais -
que eu tenha declarado aqui, no início do arquivo.
Vamos agora iterar sobre os três alunos, e solicitar ao usuário
seus nomes e casas.
>> para int eu recebo 0, i é menos do que a constante, i + +.
E agora dentro do corpo deste para loop, eu vou imprimir algo
como o nome do aluno.
Eu estou indo então para começar realmente que nome do aluno, especificando
estudantes adaptador externo.
Em outras palavras eu quero que o aluno i-th na matriz chamou os alunos, mas agora
Eu quero ficar nesse i-th aluno nome, e para fazer isso, eu vou usar
o. operador, a fim de chegar a um dentro do campo específico da estrutura.
Então eu especificar estudantes adaptador externo. Nome recebe o valor de retorno de GetString ().
Enquanto isso, eu estou indo para imprimir algo semelhante, dizendo aluno
casa, e agora eu vou especificar que o campo de estudantes casa i-th
deve obter o valor de retorno de outra chamada para GetString ().
>> Agora, vamos fazer alguma coisa com estes três nomes e as casas dos alunos,
algo simples como impressão cada em uma frase.
para int i se 0, novamente i é inferior a estudantes, i + +, printf "% s está em% s.
barra invertida n ", e agora deixe-me ligar os valores desses dois campos,
estudantes adaptador externo. nome, vírgula, estudantes adaptador externo. casa, perto
parêntese, ponto e vírgula.
>> E agora eu preciso fazer mais uma coisa.
Na parte inferior deste arquivo, eu preciso liberar a memória que foi alocada
nos bastidores por GetSring (), que claro chama malloc, a fim de
alocar memória para as cordas o usuário digita.
Mas isso é simples.
para int eu recebo 0, i é inferior a estudantes, i + +, e no interior do corpo de
este laço for, eu estou indo simplesmente para fornecer gratuitamente aos alunos suporte i. nome,
e os alunos livres adaptador externo. casa.
>> Agora, temos claramente utilizadas três loops neste programa, quando na verdade eu
poderia ter usado apenas um, mas este é apenas por causa da manifestação, de modo que
podemos especificar em três distintas os passos que exatamente estamos fazendo.
Estamos em primeiro lugar obter um nome e uma casa para cada um dos estudantes, estamos em seguida
imprimir o nome ea casa para cada um dos três estudantes, e
então nós estamos indo para liberar a memória utilizado por cada um dos alunos.
Mas certamente que poderia ter combinar isso em uma maior loop for.
>> Vamos agora salvar, compilar e executar este programa.
fazem estruturas 0. / structs 0, estudante de nomear, vamos fornecer David, ele vai viver
em Mather House, nome do aluno, vamos diz Lauren, ela vai viver em Leverett
House, nome do aluno, Rob, ele vai viver em Kirkland House.
E, de fato, Davi está no Mather, Lauren está na Leverett,
e Rob está em Kirkland.