INTERLOCUTEUR 1: Écrivons un programme qui demande à l'utilisateur les noms et maisons de trois étudiants. Maintenant, pour stocker les noms et les maisons nous pourrions utiliser, ce qui, six variables. Trois chaînes pour les noms, et une autre trois chaînes pour les maisons, mais nous savons déjà que nous pouvons nettoyer ce code en utilisant des tableaux à la place, par exemple un tableau de taille 3, pour la trois noms, et un autre tableau de taille 3 pour les maisons. Mais il s'avère que nous pouvons nettoyer cette place plus loin encore, et fait garder les Les noms et les maisons ensemble, de sorte qu'une le nom de l'étudiant et sa maison sont en quelque sorte encapsulé, ainsi prendre la parole, dans la même variable. Pour ce faire, cependant, nous devons déclarer notre propre type de données, notre propre type en C, que les auteurs de C n'ont pas nécessairement penser il ya quelques années. Pour ce faire, nous pouvons utiliser le mot-clé typedef, avec le autre mot clé struct. Jetons un coup d'oeil. A l'intérieur de structs.h, j'ai déjà obtenu commencé par y compris la bibliothèque de CS50. Je prochaine va taper typedef struct, puis une accolade. A l'intérieur de la structure, je vais préciser qu'un étudiant doit avoir une chaîne appelée nom, et un autre chaîne appelée maison. Je vais fermer alors mes accolades, et spécifier que le nom de ce nouveau type de données doit être étudiant. En d'autres termes, par l'intermédiaire de cette syntaxe ai-je déclaré un nouveau type de mon propre des données qui n'existaient pas il ya un moment, et à l'intérieur de ce type de données sont deux données champs ou des membres de données, l'un appelé nom, une maison dite, les deux sont de type chaîne. Prenons maintenant ce type dans un programme réel. En structs0.c, j'ai obtenu de la même moi a commencé déjà avec une certaine code réutilisable, et je suis maintenant va utiliser ces données saisir étudiant, comme suit. Je vais d'abord déclarer une tableau de type étudiant, je vais appeler les élèves de tableau - pluriel - et je précise que sa taille sera trois, qui, avis, est la valeur de les ÉTUDIANTS constants - dans toutes les capitales - que j'ai déclaré ici, plus tôt dans le fichier. Voyons maintenant itérer sur ces trois étudiants, et demander à l'utilisateur leurs noms et leurs maisons. pour int j'obtiens 0, i est inférieur que constante, i + +. Et maintenant à l'intérieur du corps de ceux-ci d' boucle, je vais imprimer quelque chose comme le nom de l'étudiant. Je puis aller à réellement obtenir que le nom de l'étudiant en spécifiant étudiants encadrent i. En d'autres termes, je veux l'étudiant i-ème dans le tableau appelé les étudiants, mais maintenant Je veux obtenir à ce i-e étudiant de nom, et pour ce faire, je vais utiliser l'. opérateur, afin d'obtenir à un l'intérieur du champ spécifique de la structure. Alors je précise étudiants encadrent i. Nom obtient la valeur de retour de GetString (). En attendant, je vais imprimer quelque chose de semblable, disant étudiant de maison, et maintenant je vais préciser que le champ étudiants maison i-ème doit obtenir la valeur de retour de un autre appel à GetString (). Maintenant, nous allons faire quelque chose avec ces trois Les noms et les maisons des étudiants, quelque chose de simple comme l'impression chaque dans une phrase. pour int i me 0, nouveau i est inférieur à étudiants, i + +, printf "% s est dans% s. barre oblique inverse n ", et maintenant laissez-moi branche dans les valeurs de ces deux champs, étudiants encadrent i. nom, une virgule, étudiants encadrent i. maison, près parenthèse, point-virgule. Et maintenant, je dois faire autre chose. Au bas de ce fichier, je dois libérer la mémoire allouée dans les coulisses par GetSring (), qui invite bien sûr malloc, afin de allouer de la mémoire pour les chaînes les types d'utilisateurs. Mais cela est simple. pour int j'obtiens 0, i est inférieur à les étudiants, i + +, et à l'intérieur du corps de cette boucle, je vais tout simplement fournir gratuitement les étudiants support i. nom, et les étudiants libres encadrent i. maison. Maintenant, nous avons clairement utilisé trois pour les boucles dans ce programme, quand vraiment je aurait simplement utilisé un, mais ce n'est juste pour l'amour de la démonstration, de sorte que nous pouvons spécifier dans trois groupes distincts étapes Qu'est-ce exactement que nous faisons. Nous d'abord obtenir un nom et une maison pour chacun des élèves, nous sommes alors imprimer le nom et la maison pour chacun des trois étudiants, et alors nous allons libérer la mémoire utilisée par chacun des étudiants. Mais sûrement, nous aurions pu combiner cette dans un plus grand pour la boucle. Voyons maintenant enregistrer, compiler, et exécuter ce programme. faire struct 0. / struct 0, étudiant de nom, nous allons fournir David, il vivra à Mather House, le nom de l'étudiant, nous allons dire Lauren, elle va vivre dans Leverett Maison, le nom de l'élève, Rob, il va vivre dans Kirkland House. Et en effet, David est à Mather, Lauren est dans Leverett, et Rob est situé à Kirkland.