>> LUIDSPREKER 1: Laten we een programma schrijven dat vraagt ââde gebruiker om de namen en
huizen van drie studenten.
Nu, om die namen en huizen op te slaan we kunnen gebruiken, wat zes variabelen.
Drie snaren voor de namen, en een ander drie snaren voor de huizen,
maar we weten al dat we kunnen opruimen die code met behulp van arrays in plaats daarvan,
bijvoorbeeld een array van grootte 3 voor de drie namen en een reeks
maat 3 voor de huizen.
Maar het blijkt dat we dit opruimen nog verder, en eigenlijk die bewaren
namen en huizen samen, zodat een naam van de student en zijn of haar huis
een of andere manier ingekapseld, om zo te spreken in dezelfde variabele.
>> Om dit te doen, hoewel, we moeten verklaren onze eigen data type, onze eigen soort in C,
dat de auteurs van C niet noodzakelijkerwijs denken van jaren geleden.
Om dit te doen kunnen we het trefwoord gebruiken typedef, samen met de
andere keyword struct.
Laten we eens een kijkje nemen.
Binnenkant van structs.h, ik heb al gekregen gestart door
waaronder de CS50 bibliotheek.
Ik ga naast ga typedef struct typen, en dan een accolade.
Binnenkant van de structuur, ik ga specificeren dat een student moet een
koord genoemd naam en andere snaar genoemd huis.
Ik ga dan sluit mijn accolades, en aangeven dat de naam van
dit nieuwe type gegevens zijn student.
Met andere woorden, via deze syntax I verklaarde een nieuw datatype van mijn eigen
dat niet bestond een moment geleden, en binnen dit gegevenstype zijn twee data
velden of gegevens leden, een zogenaamde naam, een zogenaamde huis, beide
zijn van het type string.
>> Laten we nu gebruik maken van dit type een actuele programma.
In structs0.c, ik heb zo ook gekregen mezelf begon al met een aantal
standaardtekst code, en ik ben nu zal deze gegevens gebruiken
Typ student, als volgt.
Ik ga eerst naar een verklaren reeks van het type student, ik zal
roepen de array studenten -
meervoud -
en ik zal aangeven dat de omvang zal zijn drie, die, bericht, is de waarde van
de constante STUDENTEN -
in alle hoofdsteden -
die ik hier heb verklaard up, eerder in het bestand.
Laten we nu itereren over die drie studenten, en vraagt ââde gebruiker om
hun namen en huizen.
>> voor int krijg ik 0, i minder dan dat constante, i + +.
En nu de binnenkant van het lichaam van deze voor lus, ik ga om uit te printen iets
zoals de naam van de student.
Ik ben dan gaan om daadwerkelijk te krijgen dat naam van de student door het specificeren
studenten beugel i.
Met andere woorden wil ik de i-de student in de array genaamd studenten, maar nu
Ik wil op die i-de student te krijgen naam, en om dit te doen, ga ik gebruiken
het. exploitant, om op een te krijgen specifiek gebied binnen de structuur.
Dus ik opgeven studenten beugel i. Naam krijgt de return waarde van GetString ().
Ondertussen ga ik om uit te printen iets dergelijks, zegt student
huis, en nu ga ik om aan te geven dat de i-de studenten huis veld
zal de return waarde van krijgen een ander gesprek te GetString ().
>> Nu laten we iets doen met deze drie namen en huizen van studenten,
iets simpels als het afdrukken elk in een zin.
voor int i Get 0, nogmaals ik minder dan studenten, i + +, printf "% s is% s.
backslash n ", en nu laat ik de stekker in de waarden van deze twee velden,
studenten beugel i. naam, komma, studenten beugel i. huis, dichtbij
Paren, puntkomma.
>> En nu moet ik nog een ding doen.
Aan de onderkant van dit bestand, moet ik vrij het geheugen dat werd toegewezen
achter de schermen door GetSring (), die roept natuurlijk malloc, om
geheugen toewijzen voor de snaren de gebruiker typt.
Maar dit is eenvoudig.
voor int krijg ik 0, i minder dan studenten, i + +, en in het lichaam van
deze for loop, ga ik gewoon naar bieden gratis studenten beugel i. naam,
en vrije studenten beugel i. huis.
>> Nu, we hebben duidelijk gebruik gemaakt van drie lussen in dit programma, wanneer ze echt ik
kon gewoon hebben gebruikt men, maar dit is alleen omwille demonstratie, dus dat
we kunnen specificeren in drie verschillende stappen wat we precies aan het doen zijn.
We krijgen eerst een naam en een huis voor elk van de studenten, we zijn dan
het afdrukken van de naam en het huis voor elk van de drie studenten en
dan gaan we naar het geheugen vrij gebruikt door elk van de studenten.
Maar toch konden we hebben dit combineren in een grotere lus.
>> Laten we nu nog redden, compileren, en uitvoeren van deze programma.
maken structs 0. / structs 0, student te noemen, laten we zorgen voor David, zal hij leven
in Mather House, naam van de student, laten we zeggen Lauren, zal ze in Leverett wonen
House, naam van de student, Rob, zal hij wonen in Kirkland House.
En inderdaad, David is Mather, Lauren is in Leverett,
en Rob is in Kirkland.