Hallo und willkommen zurück. Lassen Sie uns unsere Diskussion über Strukturen
fortsetzen und darüber sprechen, wie sie mit Arrays zusammenhängen.
Wir haben darüber gesprochen, wie Strukturen Arrays ähneln und dass Sie mehr als einen Wert
speichern können, diese jedoch unterschiedlich sind, da Sie unterschiedliche Datentypen haben und diese
auf diese Weise gruppieren können.
Sie können aber auch tatsächlich ähnliche Arrays von Strukturen haben.
Sie haben gesehen, wie nützlich die Struktur ist und wie Sie logisch gruppierte Elemente logisch gruppieren
können. Wir haben das gesehen. Wir wissen, wie man eine
Struktur mit verschiedenen Elementen unter Verwendung des Schlüsselworts struct unter Verwendung
eines Tag-Namens definiert.
Und wir wissen auch, wie man eine Variable dieses Typs erstellt.
Denn was eine Struktur im Wesentlichen ist, ist ein neuer Datentyp, den Sie verwenden können.
Anschließend können Sie mit dem Elementauswahloperator auf Elemente einer Struktur zugreifen.
Was ist, wenn Sie mehrere Strukturen innerhalb eines Arrays
erstellen möchten? Du kannst das machen.
So ist es beispielsweise nur erforderlich, für jedes Datum, das vom Programm verwendet wird,
eine Variable anstelle von drei zu verfolgen. Dies ist der Vorteil einer Struktur.
Wenn wir 10 verschiedene Daten in einem Programm
behandeln wollten, müssten wir nur 10 verschiedene Variablen anstelle von 30 verfolgen.
Denken Sie daran, dass die Struktur drei Variablen in sich enthält.
10 für verschiedene Variablen ist immer noch ziemlich viel, also
ist es wirklich nicht der optimale Weg. Sie möchten wahrscheinlich ein Array erstellen.
Weil Sie 10 gleiche Typen haben würden, genauso wie Sie 10 Zoll
gleich haben würden. Es würde nur einen Strukturtyp geben.
Eine bessere Methode zur Behandlung der 10 verschiedenen
Daten besteht in der Kombination von zwei leistungsstarken Funktionen der Programmiersprache c,
Strukturen und Arrays.
Sie können sie zusammen verwenden, um es noch leistungsfähiger zu machen.
Es ist also durchaus gültig, ein Array von Strukturen zu
definieren. Das Konzept eines Arrays von Strukturen ist in c sehr mächtig und wichtig. Achten Sie also genau darauf.
Das Deklarieren eines Arrays von Strukturen entspricht dem Deklarieren einer anderen Art von Array.
Sie geben den Typ an, bei dem es sich um einen Strukturtyp handelt.
Wenn Sie also ein Array von Strukturen mit dem
Namen Datum erstellen möchten, würden Sie
Strukturdatum und dann den Variablennamen sagen und dann die Klammern verwenden,
genau wie Sie die Klammern für andere Arrays verwenden, müssen Sie die Größe angeben.
Wenn wir also in diesem Fall 10 Instanzen oder 10 Elemente des Datumsstrukturtyps
erstellen, würden wir 10 in diesen Klammern für das Zeichen sagen.
Dies würde also ein Array namens meine Daten definieren, das aus 10 Elementen besteht.
Jedes Element innerhalb des Arrays ist als Strukturdatum vom Typ bf
definiert, das drei Elemente enthält.
Sie speichern also im Wesentlichen 30
verschiedene Datensätze, 30 verschiedene Datenelemente.
Um Mitglieder eines Arrays von Strukturen zu identifizieren,
wenden Sie dieselbe Regel an, die Sie für einzelne Strukturen verwenden.
Sie legen den Strukturnamen mit dem Punktoperator und dann mit dem Mitgliedsnamen ab.
Das Verweisen auf ein bestimmtes Strukturelement innerhalb des Arrays ist ganz natürlich.
Um das zweite Datum im Array "Meine Daten" auf den 8. August 1986 festzulegen,
müssen Sie lediglich den Namen des Arrays, meine Daten
und den Index angeben. Wir geben hier das zweite Datum an.
Denken Sie daran, dass Arrays auf 0 basieren. Also sagen wir 1, sub-1.
Und wenn wir dann auf Elemente dieses Array-Elements oder
auf Mitglieder dieser Struktur für dieses Element zugreifen möchten, sagen wir Punktmonat.
Dies gibt uns also das zweite Element im Array "Meine Daten".
Der Monatswert für diesen Strukturtyp, und hier weisen wir ihm den Wert 8 zu.
und wenn wir dann auf den Tag zugreifen möchten, werden wir auch den 8.
Tag zuweisen, da es der 8. August ist. Und schließlich würden wir für das Jahr sagen,
dass das Punktjahr gleich 1986 ist.
Auf diese Weise können Sie dem zweiten Element des my Datums-Arrays die drei
verschiedenen Variablen zuweisen, da es vom Typ struct, date struct ist.
Sie sollten beachten, dass es wirklich nicht anders ist.
Der einzige Unterschied besteht darin, dass Sie einen Punkt haben. Normalerweise würden Sie nur meine Daten unter
1 sagen, und das wäre es, weil Sie abhängig vom Typ dieses Arrays nur
eine Variable zuweisen könnten.
In diesem Fall können Sie jedoch Sub-1 mit drei verschiedenen Variablen sagen, da
dies die drei Elemente innerhalb der Struktur sind.
Initialisieren eines Arrays von Strukturen.
Die Initialisierung von Arrays, die Strukturen enthalten, ähnelt der
Initialisierung mehrdimensionaler Arrays.
Denken Sie daran, dass wir bei mehrdimensionalen Arrays der spezifischen Syntax
mit geschweiften Klammern an der Außenseite und geschweiften Klammern an der Innenseite folgen, die jede Zeile darstellen.
Die geschweiften Klammern an der Innenseite waren eigentlich optional, aber
es machte es viel besser lesbar. Und so folge ich gerne dieser Konvention.
In diesem Beispiel erstellen wir ein Datum mit meiner Datumsstruktur, es
wird Größe 5 haben. Und dann werden wir nur die ersten drei Elemente initialisieren.
Genau wie bei einem mehrdimensionalen Array haben wir diese
geschweiften Klammern im Inneren. Und so das erste Element im Array "Meine Daten", bei
dem es sich um einen Index unter Null handelt. Wir werden sagen, der
Monat ist 12, das Datum ist 10 und das Jahr ist 1975.
Und dann machen wir dasselbe für das erste Element. Wir werden 12 30 1980 sagen.
Und für das dritte Element sagen wir 11 15 2005.
Und weil wir die beiden anderen Elemente im
Array "Meine Daten" nicht angegeben haben, werden diese nicht initialisiert.
Damit werden die ersten drei Daten festgelegt.
In der Reihe mein Datum auf 12
10 1975, 12 30 1980 und 11 15 2005.
Die inneren Perioden von Zahnspangen sind optional, genau wie in einem mehrdimensionalen Bereich sind sie auch optional.
Aber es macht es wieder einfacher zu lesen, leichter mit diesen inneren Klammern zu folgen,
ich würde dieser Konvention folgen.
Sie können dies also tun, wenn Sie die
geschweiften Klammern entfernen möchten, aber es ist etwas schwieriger zu befolgen, da
Sie jetzt nur noch Kommas haben, die durch Kommas getrennt sind, oder Elemente, die durch Kommas getrennt
sind, und es kann sehr verwirrend werden, wenn Sie viel tun von diesen.
Sie müssen das richtig zuordnen, sagen wir, ich bin im vierten vierten
Element für mein viertes Komma, okay, das wird das zweite
Element des Arrays sein, es ist schwieriger zu folgen, also verwenden Sie diese in geschweiften Klammern.
Wenn Sie nur das dritte Element des Arrays mit einem bestimmten Wert initialisieren
möchten, können Sie meine Daten unter 5 angeben.
Sie erstellen das Array hier noch.
Sie deklarieren die Variable immer noch und setzen die Größe auf fünf.
Aber innerhalb der geschweiften Klammern
sagen Sie zwei innere Klammern und
Sie werden 2 bis 12 10 1975 initialisieren.
Sie sehen also die eckigen Klammern, die das Element darstellen, das Sie initialisieren
möchten. Dann ist der Zuweisungsoperator gleich und in den geschweiften Klammern initialisieren
Sie den Monat, den Tag und das Jahr für die
Elemente in der Struktur.
So können Sie genau angeben, welches Element Sie ebenfalls initialisieren möchten.
Wenn Sie nur den Monat und den Tag als zweites Element des Arrays "Meine Daten" auf 12 und 30 setzen
möchten, können Sie etwas sehr Ähnliches tun.
Sie müssen nur ein Komma eingeben, um jedes Attribut zu trennen.
Sie möchten das Jahr nicht wirklich einstellen, um diese geschweiften Klammern verwenden zu können.
Man könnte sagen, Punktmonat
gleich 12 Unter-1 Punkttag gleich 30.
Und wieder sieht diese Syntax der Initialisierung von Strukturvariablen an
anderer Stelle sehr ähnlich.
Der einzige Unterschied besteht darin, dass es sich um ein Array handelt. Sie müssen den Index des
Arrays angeben, aber eine ähnliche Syntax.
Was ist mit Strukturen, die Arrays enthalten?
Elemente innerhalb der Struktur, die ein Array enthalten.
Es ist auch möglich, Strukturen zu finden, die ein Array als Mitglied enthalten.
Dies könnte nützlich sein.
Am häufigsten wird ein Array von Zeichen in einer Struktur eingerichtet.
Wir verwenden Char-Arrays ziemlich gut für Strings.
Daher ist es sehr üblich, dass eine Struktur im Wesentlichen eine Zeichenfolge
enthält, ein Zeichenarray.
Angenommen, Sie möchten eine Struktur namens
Monat definieren, die als Mitglieder die Anzahl der Tage im
Monat sowie eine dreistellige Abkürzung für den Monatsnamen enthält.
Nun, hier könnten wir ein Zeichenarray verwenden. Wir könnten Strukturmonat sagen.
Wir wissen, wie man eine Struktur definiert. Auch hier wird kein Speicher zugewiesen.
So wird die Struktur definiert. Dies sind die Elemente, die darin enthalten sind.
Hier verwenden wir das Schlüsselwort struct. Wir sagen den Namen der Struktur. Der Tag-Name ist Monat, und dann
haben wir die linke geschweifte Klammer und dann geben wir die Elemente an.
Wir haben ein Element, das eine Ganzzahl ist, die die Anzahl der Tage darstellt, an denen wir am Ende ein Semikolon haben.
Und dann haben wir ein Zeichenarray, Zeichenname unter
drei, also Größe drei, weil es drei Zeichen hat.
Und dann beenden wir die Struktur mit der rechten geschweiften Klammer im Semikolon.
Aber denken Sie daran, Charaktere sind Arrays und sie sind auch eng mit Zeigern verwandt. Das wissen wir inzwischen.
Sie können Strukturen jedoch leicht Arrays enthalten lassen, indem Sie sie
einfach als Elementelement einfügen.
Auf diese Weise wird eine Monatsstruktur eingerichtet, die ein ganzzahliges
Element mit der Bezeichnung Anzahl der Tage und ein Zeichenelement mit dem Namen name enthält.
Der Mitgliedsname besteht eigentlich aus drei Zeichen, ziemlich einfach.
Wie greifen Sie tatsächlich darauf zu? Nun, zuerst müssten Sie Ihre Variable erstellen.
Die Variable würde Speicher für die Elemente in der Struktur erstellen, und dann
möchten Sie einfach die richtigen Felder in der 8-Monats-Variablen, dem Zeichenarray, festlegen,
da dies der Name war. Wir hatten Namen und
Anzahl der Tage. Hier heißt es Name und das Beispiel heißt Monat.
Nun, ein Monat ist der Variablentyp und dann ist der Name der Elementtyp, also ist das richtig.
Also erstellen wir hier eine Struktur. Es ist vom Typ Monat.
Der Variablenname ist ein Monat. Wir initialisieren es mit nichts.
Wir setzen sofort eine Monatsanzahl von Tagen von 31.
Wir verwenden diesen Punktelement-Auswahloperator.
Und dann möchten wir dem Zeichenarray zuweisen, wir
können nicht direkt einem Zeichenarray zuweisen.
Sie müssten einen Str-Vergleich durchführen oder so, wenn Sie alles unterschreiben möchten. Und das könntest du tun.
Sie müssen diese Indizes nicht verwenden. Sie könnten sagen, str
kopiere ein Monats-Punktnamen-Komma und dann j a n in
doppelte Anführungszeichen oder du kannst dies tun, indem du über den Index
auf die Elemente des Arrays zugreifst.
Hier sagen wir einen Monatspunktnamen, weil wir auf die Namensmitgliedsvariable
oder das Elementelement zugreifen müssen.
Und dann geben wir in den Klammern den Index des Arrays an.
Wir werden feststellen, dass es das erste Zeichen im Array von j signiert, das zweite a, das dritte n.
Sie würden diese Syntax sehen, wenn Sie Ints und Doubles
und Floats ausführen würden. Wenn Sie ein Zeichenarray haben,
verwenden Sie normalerweise die Funktion zum Kopieren von Str-Rührungen und weisen alles mit doppelten Anführungszeichen zu.
Sie können die Variable auch mit denselben Werten initialisieren, indem Sie beim
Deklarieren der Variablen etwas sehr Ähnliches tun. Nur innerhalb der geschweiften Klammern, da
es sich um ein Array handelt, können Sie
innere geschweifte Klammern und dann die einfachen Anführungszeichen um jedes Zeichen verwenden.
Außerdem können Sie innerhalb eines Arrays 12-Monats-Strukturen einrichten, die jeden Monat des Jahres darstellen.
Jetzt können wir eine
Monatsvariable erstellen, die ein Array der Größe 12 vom Typ struct month ist
und jeden Monat darstellen kann.
Und dann können wir für jeden Monat die Anzahl der Tage und dann die Abkürzungen für den Monat ausgeben.
Die Verwendung dieser beiden leistungsstarken Konzepte von Arrays
und Strukturen ist daher sehr, sehr nützlich.
Strukturen können viele Elemente haben, so
dass sie tatsächlich eine Struktur von Arrays sein können und Elemente
innerhalb der Struktur ein Array sein können.
Und wir werden als nächstes darüber sprechen, wie wir Strukturen verwenden können, um andere Elemente wie Zeiger zu enthalten.
Sie werden jedoch feststellen, dass Strukturen jeden Datentyp in
vielen verschiedenen Datentypen speichern können.
Und es ist sehr, sehr nützlich, es mit dem Array-Konzept zu verwenden.
Ich hoffe das war hilfreich. Wieder werden wir die Herausforderung
haben, einige dieser Konzepte zu demonstrieren und später
einige Beispiele in Codeblöcken aufzurufen. Vielen Dank.