2 00:00:00,000 --> 00:00:02,760 >> Sprecher 1: Lassen Sie uns ein Programm schreiben, dass fragt den Benutzer nach dem Namen und 3 00:00:02,760 --> 00:00:04,700 Häuser von drei Studenten. 4 00:00:04,700 --> 00:00:08,840 Nun, um diese Namen zu speichern und Häuser wir nutzen konnten, was, sechs Variablen. 5 00:00:08,840 --> 00:00:12,260 Drei Saiten für die Namen, und ein anderer drei Saiten für die Häuser, 6 00:00:12,260 --> 00:00:16,560 aber wir wissen bereits, dass wir aufräumen , dass Code, der von der Verwendung von Arrays statt, 7 00:00:16,560 --> 00:00:20,220 zum Beispiel ein Array der Größe 3 für die drei Namen, und eine andere Reihe von 8 00:00:20,220 --> 00:00:22,110 Größe 3 für die Häuser. 9 00:00:22,110 --> 00:00:25,870 Aber es stellt sich heraus, das können wir aufräumen noch weiter, und tatsächlich ziehen 10 00:00:25,870 --> 00:00:30,520 Namen und Häuser zusammen, so dass eine der Name des Studenten und sein Haus 11 00:00:30,520 --> 00:00:34,940 irgendwie gekapselt, so zu sprechen in der gleichen Variablen. 12 00:00:34,940 --> 00:00:39,095 >> Um dies zu tun, obwohl, wir müssen erklären, unsere eigenen Datentyp, unsere eigene Art in C, 13 00:00:39,095 --> 00:00:42,660 dass die Autoren der C nicht unbedingt denken von Jahren. 14 00:00:42,660 --> 00:00:45,630 Um dies zu tun, können wir das Schlüsselwort typedef, zusammen mit der 15 00:00:45,630 --> 00:00:47,200 andere Schlüsselwort struct. 16 00:00:47,200 --> 00:00:48,160 Lassen Sie uns einen Blick. 17 00:00:48,160 --> 00:00:50,650 Innerhalb von structs.h, habe ich bereits Gestartet bekommen 18 00:00:50,650 --> 00:00:52,560 einschließlich der CS50-Bibliothek. 19 00:00:52,560 --> 00:00:57,640 Ich werde nächste typedef struct geben, und dann eine geschweifte Klammer. 20 00:00:57,640 --> 00:01:01,370 Innerhalb der Struktur, ich werde angeben, dass ein Schüler müssen einen 21 00:01:01,370 --> 00:01:04,960 String Name genannt, und ein anderer String namens Haus. 22 00:01:04,960 --> 00:01:08,430 Ich werde dann schließe meine geschweiften Klammern, und angeben, dass der Name des 23 00:01:08,430 --> 00:01:11,420 Diese neuen Datentyp sind Schüler. 24 00:01:11,420 --> 00:01:15,550 In anderen Worten, über diese Syntax habe ich erklärt ein neuer Datentyp von meinem eigenen 25 00:01:15,550 --> 00:01:19,910 , die nicht vor einem Augenblick noch nicht gab, und innerhalb dieses Datentyps sind zwei Daten 26 00:01:19,910 --> 00:01:24,270 Felder oder Datenelemente, nannte Namen, sogenannte Haus, die beide 27 00:01:24,270 --> 00:01:25,630 sind vom Typ String. 28 00:01:25,630 --> 00:01:27,690 >> Lassen Sie uns nun diese Art in einer tatsächlichen Programms. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 In structs0.c, habe ich ähnlich geworden mich schon mit einigen gestartet 31 00:01:34,090 --> 00:01:36,999 Standardcode, und ich bin jetzt gehen, um diese Daten verwenden 32 00:01:36,999 --> 00:01:39,100 Typ Student, wie folgt. 33 00:01:39,100 --> 00:01:42,450 Ich bin zuerst zu erklären, ein Array vom Typ Student, werde ich 34 00:01:42,450 --> 00:01:43,920 rufen Sie die Array-Studenten - 35 00:01:43,920 --> 00:01:44,630 Plural - 36 00:01:44,630 --> 00:01:49,360 und ich werde angeben, dass ihre Größe werden drei, die Ankündigung, der Wert ist 37 00:01:49,360 --> 00:01:50,880 die konstanten STUDENTEN - 38 00:01:50,880 --> 00:01:51,890 in allen Hauptstädten - 39 00:01:51,890 --> 00:01:54,930 dass ich hier erklärt, früher in der Datei. 40 00:01:54,930 --> 00:01:58,280 Lassen Sie uns nun über diese drei laufen Studenten, und fordert den Benutzer auf, 41 00:01:58,280 --> 00:02:00,050 ihre Namen und Häuser. 42 00:02:00,050 --> 00:02:05,422 >> für int i 0 erhalten, weniger ist i als die Konstante, i + +. 43 00:02:05,422 --> 00:02:08,600 Und nun innerhalb des Körpers von diesem für Schleife, werde ich etwas ausdrucken 44 00:02:08,600 --> 00:02:11,470 wie der Name des Studenten. 45 00:02:11,470 --> 00:02:14,890 Ich werde dann tatsächlich bekommen, dass der Name des Studenten durch die Angabe 46 00:02:14,890 --> 00:02:17,290 Studenten Halterung I. 47 00:02:17,290 --> 00:02:21,550 Mit anderen Worten: Ich will das i-te Schüler in das Array namens Studenten, aber jetzt 48 00:02:21,550 --> 00:02:25,340 Ich möchte an dieser i-ten Schüler erhalten nennen, und dies zu tun, werde ich nutzen 49 00:02:25,340 --> 00:02:30,160 die. Betreiber, um an eine bekommen bestimmten Bereich innerhalb der Struktur. 50 00:02:30,160 --> 00:02:37,100 Also ich angeben Studenten Halterung I. Name bekommt den Rückgabewert der GetString (). 51 00:02:37,100 --> 00:02:40,310 In der Zwischenzeit werde ich ausdrucken etwas ähnliches, sagen Studenten 52 00:02:40,310 --> 00:02:45,410 Haus, und jetzt werde ich angeben dass die Studenten Haus Feld i-ten 53 00:02:45,410 --> 00:02:49,480 wird der Rückgabewert erhalten ein weiterer Anruf auf GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Nun wollen wir etwas tun, mit diesen drei Schülernamen und Häuser, 55 00:02:52,350 --> 00:02:56,230 etwas einfach wie Drucken jeweils in einem Satz. 56 00:02:56,230 --> 00:03:07,580 für int i 0 erhalten, wieder weniger als i Studenten, i + +, printf "% s in% s. 57 00:03:07,580 --> 00:03:12,600 Backslash-n ", und jetzt lassen Sie mich stecken die Werte dieser zwei Felder, 58 00:03:12,600 --> 00:03:19,055 Studenten Halterung I. Name, Komma, Studenten Halterung I. Haus, in der Nähe 59 00:03:19,055 --> 00:03:21,290 paren, Semikolon. 60 00:03:21,290 --> 00:03:23,020 >> Und jetzt muss ich noch eine Sache zu tun. 61 00:03:23,020 --> 00:03:26,600 Am Ende dieser Datei, muss ich den Speicher frei, der zugewiesen wurde 62 00:03:26,600 --> 00:03:30,290 hinter den Kulissen von GetSring (), die Natürlich ruft malloc, um 63 00:03:30,290 --> 00:03:32,500 reservieren Speicher für die Saiten der Benutzer. 64 00:03:32,500 --> 00:03:35,720 Aber dies ist einfach. 65 00:03:35,720 --> 00:03:42,610 für int i 0 erhalten, weniger als i Studenten, i + +, und im Inneren des Körpers 66 00:03:42,610 --> 00:03:48,670 Diese for-Schleife, ich bin einfach da, um Studenten bieten kostenlose Halterung i. Name, 67 00:03:48,670 --> 00:03:52,300 und Studenten kostenlos Halterung I. Haus. 68 00:03:52,300 --> 00:03:55,620 >> Nun, wir haben eindeutig verwendet drei for-Schleifen in diesem Programm, wenn ich wirklich 69 00:03:55,620 --> 00:03:58,800 könnte gerade benutzt haben, aber dies ist nur zu Demonstrations willen, so dass 70 00:03:58,800 --> 00:04:02,850 können wir in drei verschiedenen angeben Schritte, was genau wir tun. 71 00:04:02,850 --> 00:04:06,120 Wir sind zuerst immer einen Namen und ein Haus für jeden der Schüler, wir sind dann 72 00:04:06,120 --> 00:04:08,900 Ausdruck der Name und das Haus für jeder der drei Studenten, und 73 00:04:08,900 --> 00:04:11,910 dann werden wir um den Speicher frei durch jeden der Studierende verwendet. 74 00:04:11,910 --> 00:04:15,310 Aber sicherlich haben wir kombinieren diese in eine größere for-Schleife. 75 00:04:15,310 --> 00:04:18,650 >> Lassen Sie uns nun speichern, übersetzen, und führen Sie dieses Programm. 76 00:04:18,650 --> 00:04:26,850 Strukturen machen 0. / Strukturen 0, Schüler zu nennen, lassen Sie uns zur Verfügung stellen David, wird er leben 77 00:04:26,850 --> 00:04:31,580 in Mather House, der Name des Studenten, lassen Lauren sagen, wird sie in Leverett leben 78 00:04:31,580 --> 00:04:36,590 House, der Name des Studenten, Rob, werde er leben in Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Und tatsächlich ist in David Mather, Lauren ist in Leverett, 80 00:04:39,440 --> 00:04:40,810 und Rob ist in Kirkland. 81 00:04:40,810 --> 00:04:43,425