>> 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.