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.