>> COLUMNA 1: Imos escribir un programa que solicita ao usuario os nomes e
casas de tres alumnos.
Agora, para gardar os nomes e as casas poderíamos usar, o que, seis variables.
Tres cordas para os nomes, e outra tres cordas para as casas,
pero xa sabemos que podemos borrar que o código usando matrices en vez diso,
por exemplo unha matriz de tamaño 3 á tres nomes, e outro conxunto de
tamaño 3 para as casas.
Pero resulta que podemos borrar isto aínda máis lonxe, e realmente manter os
nomes e casas xuntos, de xeito que un nome do alumno e a súa casa
son de algunha maneira encapsulada, por así falar, para a mesma variable.
>> Para iso, con todo, necesitamos declarar o noso propio tipo de datos, o noso propio tipo en C,
que os autores do C non necesariamente creo que de anos.
Para iso, podemos utilizar a palabra chave typedef, xunto co
outra struct contrasinal.
Imos dar un ollo.
Dentro structs.h, eu xa chegado comezou por
incluíndo a biblioteca de CS50.
Estou próximo vai escribir typedef struct, e logo, unha bosquexo.
Dentro da estrutura, vou especifica que un alumno debe ter un
cadea chamada nome, e outro cadea chamada casa.
Vou entón pechar os corchetes, e indicar que o nome
este novo tipo de datos debe ser estudante.
Noutras palabras, a través desta sintaxe teño declarou un novo tipo de meu propio datos
que non existía un momento atrás, e dentro deste tipo de datos son dous datos
campos ou membros de datos, un chamado nome, unha chamada local, ambos dos cales
son do tipo cadea.
>> Imos agora utilizar este tipo nun programa real.
En structs0.c, comece do mesmo xeito eu mesmo xa comezou con algúns
código clichê, e eu estou agora vai utilizar estes datos
tipo estudante, como segue.
Vou primeiro para declarar unha matriz do tipo de estudante, eu vou
chamar os alumnos de matriz -
plural -
e eu vou indicar que o seu tamaño será tres, que noten, é o valor da
as constantes estudantes -
en todas as capitais -
que teña declarado aquí, ao principio do ficheiro.
Imos agora iterado sobre os tres alumnos, e pedir ao usuario
os seus nomes e casas.
>> para int eu recibín 0, i é menos que a constante, i + +.
E agora dentro do corpo deste para loop, eu vou imprimir algo
como o nome do alumno.
Eu estou indo entón para comezar realmente que nome do alumno, especificando
estudantes adaptador externo.
Noutras palabras quero que o alumno i-th na matriz chamou os alumnos, pero agora
Eu quero ir nese i-th alumno nome, e para facelo, eu vou usar
o. operador, a fin de chegar a un dentro do campo específico da estrutura.
Así que especificar os alumnos adaptador externo. Nome recibe o valor de retorno de GetString ().
Mentres tanto, eu estou indo a imprimir algo semellante, dicindo alumno
casa, e agora eu vou especificar que o campo de estudantes casa i-th
que obter o valor de retorno de outra chamada a GetString ().
>> Agora, imos facer algo con estes tres nomes e as casas dos alumnos,
algo simple como impresión cada nunha frase.
para int i se 0, de novo i é inferior a estudantes, i + +, printf "% s está en% s.
barra invertida n ", e agora déixeme chamar os valores destes dous campos,
estudantes adaptador externo. nome, coma, estudantes adaptador externo. casa, preto
paréntese, punto e coma.
>> E agora eu teño que facer unha cousa.
Na parte inferior deste arquivo, eu teño liberar a memoria que foi alocada
nos bastidores por GetSring (), que claro chama malloc, a fin de
asignar memoria para as cordas o usuario escribe.
Pero iso é simple.
para int eu recibín 0, i é inferior a estudantes, i + +, e no interior do corpo de
este lazo for, eu estou indo simplemente para proporcionar gratuitamente aos alumnos soporte i. nome,
e os alumnos libres adaptador externo. casa.
>> Agora, temos claramente utilizadas tres loops neste programa, cando en realidade eu
podería usar só un, pero este é só por mor da manifestación, de xeito que
podemos indicar en tres distintas os pasos que exactamente estamos facendo.
Estamos en primeiro lugar obter un nome e unha casa para cada un dos estudantes, estamos logo
imprimir o nome ea casa para cada un dos tres estudantes, e
entón nós estamos indo para liberar a memoria usado por cada un dos alumnos.
Pero certamente que podería combinar iso nunha maior loop for.
>> Imos agora gardar, compilar e executar este programa.
fan estruturas 0. / structs 0, estudante de nomear, imos ofrecer David, que vai vivir
en Mather House, nome do alumno, imos di Lauren, vai vivir en Leverett
House, nome do alumno, Rob, que vai vivir en Kirkland House.
E, de feito, David está no Mather, Lauren está en Leverett,
e Rob está en Kirkland.