ALTAVOZ 1: Vamos a escribir un programa que solicita al usuario los nombres y casas de tres estudiantes. Ahora, para almacenar los nombres y casas podríamos utilizar, qué, seis variables. Tres cadenas para los nombres, y otro tres cadenas para las casas, pero ya sabemos que podemos limpiar que el código mediante el uso de matrices lugar, por ejemplo, una matriz de tamaño 3 para el tres nombres, y otra serie de tamaño 3 para las casas. Pero resulta que podemos limpiar esto aún más lejos, y en realidad mantener a los nombres y casas juntas, de modo que una el nombre del estudiante y de su casa son de alguna manera encapsulada, por así hablar, en la misma variable. Para ello, sin embargo, tenemos que declarar nuestro propio tipo de datos, nuestro propio tipo en C, que los autores de C no necesariamente pensar en hace años. Para ello podemos utilizar la palabra clave typedef, junto con la otra estructura de palabras clave. Vamos a echar un vistazo. Dentro de structs.h, ya he hecho más que empezar por incluyendo la biblioteca CS50. Estoy al lado va a escribir typedef struct, y luego una llave. En el interior de la estructura, que voy a especificar que un estudiante debe tener un cadena llamado nombre, y otra string llamado casa. Voy a continuación, cierre mis llaves, y especificar que el nombre de este nuevo tipo de datos debe ser estudiante. En otras palabras, a través de esta sintaxis he declarado un nuevo tipo de datos de mi propia que no existían hace un momento, y dentro de este tipo de datos son dos datos campos o miembros de datos, uno llamado nombre, uno llamado casa, ambos de los cuales son de tipo cadena. Ahora vamos a utilizar este tipo en un programa real. En structs0.c, me he metido de manera similar yo ya comenzó con algunos código repetitivo, y estoy ahora vamos a utilizar estos datos escriba estudiante, de la siguiente manera. Estoy primero va a declarar una matriz de tipo estudiante, voy a llamar a los estudiantes de la matriz - plural - y voy a especificar que su tamaño será tres, que, aviso, es el valor de las constantes ESTUDIANTES - en todas las capitales - que yo he declarado aquí, anteriormente en el archivo. Ahora vamos a iterar sobre los tres estudiantes, y solicitar al usuario sus nombres y casas. para int i obtener 0, i es menor que la constante, i + +. Y ahora en el interior del cuerpo de esta para lazo, voy a imprimir algo como el nombre del estudiante. Entonces voy a conseguir realmente que nombre del estudiante especificando estudiantes ménsula. En otras palabras, quiero que el estudiante i-ésimo en la matriz denominada estudiantes, pero ahora Quiero llegar a ese número i estudiantil nombre, y para hacer esto, voy a utilizar el. operador, con el fin de llegar a un dentro del campo específico de la estructura. Así que yo indique estudiantes ménsula. Nombre obtiene el valor de retorno de GetString (). Mientras tanto, voy a imprimir algo similar, diciendo que los estudiantes de casa, y ahora me voy a especificar que el campo de los estudiantes la casa número i deberá obtener el valor de retorno de otra llamada a GetString (). Ahora vamos a hacer algo con estos tres nombres y las casas de los estudiantes, algo tan simple como la impresión cada uno en una frase. para int i get 0, de nuevo i es menor que estudiantes, i + +, printf "% s está en% s. barra invertida n ", y ahora déjame enchufo los valores de esos dos campos, estudiantes ménsula. nombre, coma, estudiantes ménsula. casa, cerca paren, punto y coma. Y ahora tengo que hacer una cosa más. En el fondo de este archivo, necesito liberar la memoria que se asignó detrás de las escenas de GetSring (), que pide, por supuesto, malloc, con el fin de asignar memoria para las cadenas los tipos de usuarios. Pero esto es simple. para int i obtener 0, i es menor que estudiantes, i + +, y el interior del cuerpo de este bucle, estoy simplemente va a proporcionar a los estudiantes sin soporte de i. nombre, y los estudiantes libres ménsula. casa. Ahora, hemos utilizado claramente tres bucles for en este programa, cuando realmente podría haber utilizado sólo uno, pero esto es simplemente por el amor de la demostración, por lo que podemos especificar en tres canales distintos Pasos qué es exactamente lo que estamos haciendo. Estamos obteniendo primero un nombre y una casa para cada uno de los estudiantes, estamos entonces imprimir el nombre y la casa de cada uno de los tres estudiantes, y a continuación, vamos a liberar la memoria utilizado por cada uno de los estudiantes. Pero seguro que podríamos haber combinar este en uno más grande para bucle. Ahora vamos a guardar, compilar, y ejecutar este programa. hacer estructuras 0. 0 / estructuras, estudiante de nombre, vamos a proporcionar David, vivirá en Mather House, el nombre del estudiante, vamos a decir Lauren, ella vive en Leverett Casa, nombre del estudiante, Rob, él vivir en Kirkland House. Y, de hecho, David está en Mather, Lauren está en Leverett, y Rob se encuentra en Kirkland.