Zeiger in C | Surendra Varma | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Intro von Zeigern

      1:01

    • 2.

      Verstehen von Zeigern

      16:23

    • 3.

      Zeiger-Arithmetik

      6:52

    • 4.

      Zeiger als Parameter zur Funktion

      3:44

    • 5.

      Zeiger auf eine Funktion

      4:56

    • 6.

      Zugriff auf String mit Zeigern

      2:37

    • 7.

      String-Vergleich mit Zeigern

      6:30

    • 8.

      String Verkettung mit Zeigern

      5:51

    • 9.

      Länge der Zeichenfolge mit Zeigern bestimmen

      6:06

    • 10.

      Zeiger & 1D Arrays

      15:41

    • 11.

      Zeiger & 2D-Arrays

      17:46

    • 12.

      Doppelzeiger

      10:31

    • 13.

      Beispielprogramm in Doppelzeiger

      2:41

    • 14.

      Dynamischer Speicher & Funktionen

      21:22

    • 15.

      Malloc()

      7:09

    • 16.

      Calloc()

      15:25

    • 17.

      Realloc()

      11:01

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

28

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Unser Kurs über Zeiger in C behandelt die Grundlagen von Zeigern und wie sie in der Programmiersprache C verwendet werden.

Wir werden damit beginnen, zu erklären, was Zeiger sind und wie sie sich von regulären Variablen unterscheiden. Wir werden dann behandeln, wie Zeiger deklariert und initialisiert werden, sowie wie man Zeigern Werte zuweist und Werte von Zeigern abruft.

Als nächstes werden wir uns mit dem Konzept der Zeigerarithmetik beschäftigen und wie sie verwendet werden kann, um Datenstrukturen im Speicher zu manipulieren. Wir werden auch die verschiedenen Arten von Zeigern diskutieren, wie z.B. Funktionszeiger.

Während des Kurses werden wir praktische Beispiele und Übungen zur Stärkung der behandelten Konzepte anbieten. Am Ende des Kurses haben Sie ein solides Verständnis von Zeigern in C und können sie effektiv in Ihren eigenen C-Programmen verwenden.

Triff deine:n Kursleiter:in

Teacher Profile Image

Surendra Varma

Best Instructor

Kursleiter:in

The name of the instructor is Surendra varma.

He is a winner of  BEST TEACHER award.

He is a winner of  Young Achiever award.

He holds Bachelors degree in Computer Science & Masters degree in Computer science. He cracked toughest exams in computer science such as GATE & UGC-NET with flying colors. Also, he is a university topper during masters.

He is currently Pursuing PhD from world's most reputed university Indian Institute of Sciences(IISC), Bangalore.

He worked with various EdTech companies in India including Great Learning. He always received best feedback from his students.

He has 14+ Years of experience in Teaching/research/Industry.

He worked in various roles like Software Engineer... Vollständiges Profil ansehen

Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Intro von Zeigern: Hallo alle zusammen. In diesem Kurs haben wir über Zeiger in C gesprochen. Wir beginnen also zuerst damit, Zeiger in C zu verstehen , gefolgt vom Nullpunkt. Es gibt die medizinischen Operationen und später werden die Hinweise und Funktionen besprochen. Und dann eine Kombination aus Zeichenketten und Zeigern. Dann wird es Sinn machen, ob eine Anzeige eine Kombination ist. Später werden wir über Doppelzeiger und Beispiele im Zusammenhang mit Doppelzeigern und schließlich über dynamische Speicherverwaltung mit Zeigern sprechen Doppelzeiger und Beispiele im Zusammenhang mit Doppelzeigern und schließlich . Das ist also das Ende. Unser Lehrplan bezog sich auf Hinweise. Und Zeiger sind das wichtigste Thema in der C-Sprache. Okay? Nutzen Sie also diese Hinweise. Und das wird Ihnen auf jeden Fall helfen , im Kurs Datenstrukturen gute Leistungen zu erbringen. Wenn Sie versuchen, in C zu implementieren. 2. Verstehen von Zeigern: Jetzt werden wir über das Konzept der Zeiger sprechen. Also zunächst, was ist mit einem Zeiger gemeint? Im Allgemeinen bestimmt goin also eine Variable, die die Adresse einer anderen Variablen speichern kann . Also Punkt, es gibt eine Variable , die die Adresse einer anderen Variablen speichern kann. Normale Variablen können also Adresse einer anderen Variablen enthalten. Deshalb benötigen wir ein Zeigerkonzept , um die Adresse einer anderen Variablen zu speichern. Jetzt zeige ich Ihnen ein Beispiel für diese Zeigervariable und ihre Darstellung. Stellen Sie sich nun vor, dass die Variable n gleich zehn ist. Okay? Das ist also eine normale Variable. Lassen Sie mich nun eine Zeigervariable in dem Stern betrachten , in dem d die Zeigervariable darstellt. Jetzt speichere ich die Adresse von n in dieser Zeigervariablen. Okay? Wenn Sie sich also auf dieses Beispiel hier konzentrieren und ich anfange, den n-Wert zu drucken, kann derselbe n-Wert auf verschiedene Arten abgerufen werden. Also wenn ich z.B. Personentage DNH schreibe, kann ich das anzeigen und bewerten. In ähnlicher Weise kann ich auch die Zeigervariable star p verwenden, um Wert von n anzuzeigen, sodass er personenbasiert ist . D star p kann verwendet werden , um den Wert von n zu drucken. Wenn Sie das also hier berücksichtigen, ist n eine variabel verzinsliche Schuld. Also ist n eine Variable und ihr entsprechender Wert ist. Dann entspricht Start p der Adresse. Oft. Wir betrachten Ibis oft als 2000er. Und dann ist p eine Zeigervariable, die die Adresse von n enthält und 2000 ist. Also p ist ein Zeiger, der entweder weich hält. Jetzt drucken wir das Ende hier. Das bedeutet, dass die Ausgabe als Zehn angezeigt wird. Und wir verwenden Stern P zum Drucken, was bedeutet, wie das bewertet wird. Stern p steht für Startbienen mit 2000. Beginnen Sie also mit den 2000ern, was bedeutet, dass der Inhalt innerhalb des Speicherorts der 2000er Jahre liegt. Dieser Stern steht also für den Umleitungsoperator, was bedeutet, dass der Inhalt in diesem Speicherplatz aktualisiert wird . Der Inhalt innerhalb dieses Speicherplatzes 2000 ist also zehn. Also werden Sie hier das Ergebnis als Zehn pingen. Jetzt können wir zwei verschiedene Zeiger schreiben. Lassen Sie uns also bei der Erklärung annehmen, dass ich hier im Stern verschiedene Punkte in Betracht ziehe. Das ist also ein Zeiger. Ich kann das also als einen Zeiger betrachten , der auf und an diese Stelle zeigen kann. Das ist also ein Zeiger auf einen Speicherplatz des Endbenutzers. In ähnlicher Weise denke ich über einen Float-Stern b nach. Dies wird also als Zeiger auf eine Fließkommaposition betrachtet . Das ist also ein Zeiger auf einen Float. Dann car star c. Das ist also ein Zeiger auf den Datentyp Character. Okay? Zeiger also auf einen Speicherort. So kannst du also zwei verschiedene Zeiger schreiben, okay? Und Sie sollten im Teaser-Pointer nur zwei Punkte im verdienten Speicherplatz verwenden . Ähnlich Fließkommazeiger, um die Fließkommaposition zu zeigen, und so weiter. Lassen Sie uns nun ein Programm schreiben, um die Adresse zu identifizieren und den Inhalt innerhalb des Zeigers anzuzeigen. Okay, also zuerst werde ich die Header-Datei hier einfügen. Das ist also stdio.h. Und innerhalb der Hauptfunktion denke ich über eine Variable nach. In der Hauptfunktion. Wir ziehen eine variable Zahl in Betracht. Lassen Sie mich also annehmen, dass die Zahl einem Wert wie 50 entspricht. Jetzt können wir eine Zeigervariable als Stern p betrachten. Das ist also eine Zeigervariable. Jetzt entspricht P der Adresse einer Zahl, einem Zeiger, der die Adresse einer anderen Variablen enthält. Okay? Jetzt können wir die Adresse dieser Variablen p ausdrucken. Okay? Lassen Sie mich also diese Adresse der Variablen ISA drucken. Sie können also eine vorzeichenlose Int-Repräsentation verwenden. Nein, okay, Prozentsatz. Sie drucken diese Adresse aus. Und Sie können auch Ihre Wertedarstellung verwenden. Das ist also der Wert von b. Also unser Wert zeigt auf p, okay? Also dieser Wert, auf den Zeiger p zeigt, verwendet Personentage D, Sie können drucken, was ein Stern p ist . Damit wird der Wert gedruckt , der auf Punkt B Okay? können Sie die Adresse und auch den Wert mit Punkt a b anzeigen. Okay? Lassen Sie uns nun sehen, welche Vorteile die Verwendung dieses Zeigers hat. Okay? Zuallererst kannst du diesen Zeiger benutzen, okay? Auch mit den anderen Konzepten. Vorteile aus dem Nähkästchen. Der erste verwendet den Zeiger. Du kannst den Code reduzieren, okay? Das wird also den Code reduzieren, den wir schreiben. Und es wird auch die Leistung verbessern. Es wird die Leistung verbessern. Und Sie werden diese Leistungsverbesserung, insbesondere in der C-Sprache, beim Abrufen feststellen. Zeichenketten rufen Bäume ab oder greifen auf sie zu. Okay? Eine weitere Sache ist, dass diese Zeiger zusammen mit anderen Konzepten wie Strukturen und Funktionen verwendet werden zusammen mit anderen Konzepten wie Strukturen und Funktionen verwendet . Also all diese Themen, also werden wir diese Hinweise verwenden, okay? Das heißt, wann immer Sie auf die Elemente eines Arrays zugreifen möchten, besteht darin, über seinen Index darauf zuzugreifen. Andere Zugriffsmöglichkeiten mit Hilfe eines Zeigers, der auf die Basisadresse des Arrays zeigt. Okay? Ein weiterer Vorteil ist nun , dass die Return-Anweisung in C im Allgemeinen nur einen einzigen Wert zurückgeben kann. Wann immer Sie mehrere Werte aus einer Funktion zurückgeben möchten , können Sie einen Zeiger verwenden. Sie können im Grunde einen Zeiger zurückgeben und diesen Punkt dort verwenden, um auf nachfolgende Speicherorte zuzugreifen. Ich kann also hier schreiben, wann immer Sie mehrere Werte oder mehrere Werte aus einer Funktion zurückgeben möchten . Okay? Also wirst du das Konzept der Zeiger verwenden. Und wann immer Sie diesen Zeiger verwenden, damit Sie auf jeden Speicherplatz im gesamten Computer zugreifen können. Okay? Dadurch können wir mit dem Zeiger auf jeden Speicherort zugreifen. Okay? Lassen Sie uns nun schreiben, da ich Bill bin, und verwenden Sie Zeiger. Okay? Also führe ich zuerst das Tauschen von zwei Zahlen durch, ohne die dritte Variable zu verwenden, aber ich werde hier das Zeigerkonzept verwenden. Okay? Fügen Sie also zuerst die Header-Datei hier ein. In der Hauptfunktion. Zunächst können wir annehmen, dass Variablen gleich zehn sind, b gleich 20. Nun betrachten wir hier Zeigervariablen, Stern b1, die die Adresse von j enthalten können, n Stern v2, um die Adresse von B zu finden. Okay? Jetzt können Sie den Inhalt vor dieser Verpackung tatsächlich anzeigen. Bevor Sie das Tauschen durchführen, können Sie Inhaltszeiger nach P1 und P2 anzeigen. Das kann also wie vor Swap geschrieben werden. Okay? Der Stern p1 entspricht der Verwendung des Prozentsatzes d. Okay? Und ich denke auch über einen Stern nach, v2 entspricht einem prozentualen Schrägstrich. Also hier schreibe ich Star B1 Content und Star. Wir verurteilen sie. Okay? Lassen Sie uns nun das Swapping durchführen, zwar mit, okay, ohne eine dritte Variable direkt zu verwenden , die Sie mit Hilfe dieser Zeiger ausführen können. Stern p1 ist also gleich Stern, Stern p2. Okay? Und dann können wir hier schreiben, dass Stern p2 gleich Stern p1 minus p2 ist . Und auch Stern p1 ist gleich Stern p1 minus p2. Und schließlich kann man nach dem Tausch den Inhalt so anzeigen, print f, das Tauschen. Jetzt können Sie diesen Stern-B1-Inhalt anzeigen. Starten Sie außerdem mit Inhalten, die Sie hier anzeigen können. Das wird also Stern T1, Stern P2 sein. Okay? Nach dieser Abfolge von Aktionen eindeutig der Inhalt von UEN, wird also eindeutig der Inhalt von UEN, der Inhalt von b gegen ihn ausgetauscht. Lassen Sie mich Ihnen zeigen, wie das hier funktionieren wird. Also zuerst können Sie es hier anzeigen und es hat den Anfangswert von. Dann Bienen und andere Variablen, die anfänglich einen Wert von 20 haben. Jetzt ist P1 ein Zeiger, der entweder Sophie festhält. Nehmen wir an , die Sophia ist 2000er Jahre und die Adresse von b ist 3.000. Okay? Wenn das also der Fall ist, dann ist P1 ein Zeiger mit der Adresse Sophia, was 2000 Speicherplatz bedeutet. P1 zeigt also auf diesen Speicherplatz. Jetzt ist P2 ein weiterer Zeiger, der die Adresse von B aufruft, was 3.000 Speicherplätzen entspricht. Und P2 zeigt auf diesen. Jetzt ist Stern p1 gleich Stern p, Stern p zwei, was bedeutet, dass Stern t1 im Grunde auf diesen Ort zeigt, oder? Jetzt wird dies aktualisiert, indem der Stern P1 hinzugefügt wird, der in einem Stern enthalten ist. Wir machen Inhalte. Der Stern-P1-Inhalt ist zehn und der Stern-P-2-Inhalt ist 20. Also zehn plus 20 wird 30 sein. Und das wird an diesem Ort gespeichert , auf den P1 zeigt. Dann ist Stern p2 gleich Stern p eins minus p Stern p2. Der Stern P1 ist also an diesem Ort enthalten, 30 minus ein Stern P2 ist, dessen Wert 20—20 ist zehn, und der wird in dieser Speicherstelle gespeichert, auf die P2 zeigt. Und schließlich ist Stern p1 gleich Stern p eins minus p Stern p, Stern P1 ist 30 und Stern p2 ist 1030 minus zehn wird 20. Und das wird in diesem Speicherplatz gespeichert , auf den p eins zeigt. Das sollte also auf 20 geändert werden. Schließlich wird die Anzeige nach dem Umschalten angezeigt, also markieren Sie den P1-Inhalt und beginnen Sie dann mit, um fortzufahren. Also nach dem Tauschen von Start P, wenn der Inhalt unser 20 ist und der Star P2-Inhalt zehn ist. Also, aber vor dem Tausch kannst du sehen, dass der Inhalt von Stern P1 auf EA zeigt und P2 startet, was bedeutet, dass der P2-Zeiger auf b zeigt, okay? Das ist also zunächst 10.20 Uhr. Aber nach dem Tauschen ist es 20.10. Okay? So wie das. 3. Zeiger-Arithmetik: Jetzt werden wir daran arbeiten, wie die Zeigerinkrementierungsoperation, Endpunkt- oder Dekrementierungsoperation funktionieren wird. Okay? Betrachten Sie hier also zuerst eine Variable, dann ist ihr Wert 50. Und ich denke hier über einen weiteren Punkt mit variablem Start p nach. Also ist P gleich der Adresse von x. Okay? Jetzt kannst du hier die entsprechende Adresse für x eintragen, die nichts anderes als P ist. Also drucke f Adresse aus, sei unsere Adresse innerhalb von IP, Adresse, die in B gespeichert ist. Okay? Sie können es also anzeigen. Aber ich denke so, r von x Caesar. Sie können also einen Prozentsatz verwenden, um diese Adresse anzuzeigen und unterschrieben zu haben, okay. Also B, du kannst anzeigen. Lassen Sie uns das jetzt ausführen und das Ergebnis von Asphalt sehen. Sie können sehen, dass dies die aktuelle Adresse von x ist. Das ist also die Gegenwart. Ich drücke, Okay. Jetzt möchte ich dieses P um eine Position erhöhen, okay? P ist also gleich P plus eins steht für das Inkrementieren um eine Speicherstelle. Okay? Adresse ist also gleich Adresse plus Inkrement um einen Speicherplatz. Dieser Speicherplatz entspricht der Größe von InDesign. Okay? Also P wird in einem Teaser um die Größe erhöht Größe . Okay? Oder ich kann sagen, dass der Wunsch, in der Wüste groß zu werden, dadurch erhöht wird , dass jede zweite Seite jemanden verdient. Wenn ich p plus zwei nehme, bedeutet das, dass ich diese Augen von InDesign mache, es wird inkrementiert. Also endlich, wenn Sie es hier anzeigen möchten, nach dem Inkrementierungsvorgang, okay. Eine Erhöhung der Adresse ist in Ordnung. Sie also mit Person bezahlt werden, können Sie die Adresse hier anzeigen. Okay? Und Sie können anfangen, es anzuzeigen. Lassen Sie uns nun diesen Code ausführen und das Reservierte sehen. Okay. Also, wenn du willst, drehen wir eine einzelne Linie. Du wirst beobachten, dass das die Adresse von x ist, oder? Okay. Und nachdem ich eine Inkrementierungsoperation durchgeführt habe, drücke ich es genau schrittweise um vier, da die Vier die Größe von Eins im Dieselspeicher darstellt. Deshalb wird es um vier erhöht. Wenn Sie nun die Erhöhung um vier betrachten, dann bedeutet das, dass B an diesen Speicherplätzen um vier inkrementiert werden muss , was nichts anderes als vier zur Größe von int teaser ist, er wird um vier auf die Größe von int inkrementiert. Nach der Inkrementierung von Adressen können Sie also hier drucken. Lassen Sie uns also diesen Code ausführen und uns das Reservat ansehen. Also, zunächst diese letzten beiden Ziffern, können Sie sehen, wie viel Geld in Dollar gespart wurde, die letzten beiden Ziffern, 80. Und hier sind die letzten beiden Ziffern 96 , weil der Unterschied 16 ist. Okay? Es zeigt deutlich an, dass wir die aktuelle Adresse um vier Speicherplätze erhöhen. Und jeder Speicherplatz entspricht dieser Größe von int. Die Größe der Ganzzahl beträgt vier Byte. Vier von vier ist gleich 16. Deshalb wird es um 16 erhöht. Okay? Nun werden wir in ähnlicher Weise eine Dekrementoperation in Betracht ziehen, okay? Also, wenn Sie eine Dekrementoperation in Betracht ziehen wollen, okay. Lassen Sie uns hier also zur Dekrementierungsoperation übergehen. Und auch hier führe ich p gleich p minus eins aus. Also hier wird P eins auf die Größe von int dekrementiert. P ist gleich p minus eins bedeutet, dass P um eins in sizeof dekrementiert wird. Nach der Inkrementierung sieht die Adresse wie folgt aus. Okay? Lassen Sie uns also diesen Code ausführen und uns das Reservat ansehen. Sie können beobachten, dass die Adresse von x aus den letzten beiden Zeichen besteht. Sie können sehen, dass Haiti jetzt um eine Position dekrementiert ist, was bedeutet, dass ein Speicherplatz der Größe einer was bedeutet, dass ein Speicherplatz der Größe einer Ganzzahl entspricht, die vier Byte entspricht. Das sollte also um vier verringert werden. Der Wert wird also wie folgt zu 76. Okay? Dann, z.B. wenn Sie um vier Speicherplätze dekrementieren wollen, dann ist p gleich P minus vier, was bedeutet, dass P um vier Eingangsgrößen von int dekrementiert wird . Die Größe des Induktors wird vier Byte betragen. Vier von vier ist gleich 16. Also sollte p um 16 dekrementiert werden. Okay? Also lass es uns hier sehen. Also das ist 80 und das ist 64, letzten beiden Ziffern, okay? Ich erinnere daran, dass alle gleich sind. Es wird also eindeutig um 16 dekrementiert. Okay? So Zeigerinkrement- und Dekrementierungsoperationen werden also die Zeigerinkrement- und Dekrementierungsoperationen ausgeführt. 4. Zeiger als Parameter zur Funktion: Jetzt erwägen wir einen Aufruf per Referenzimplementierung oder die Übergabe der Adresse der Variablen als Parameter an die Funktion. Und Sie können es verwenden, um die Adresse der Variablen zu speichern. Okay? Lassen Sie uns also erwägen, eine Scheinsumme zweier gegebener Zahlen durchzuführen. Nehmen wir also an, dass ein Komma b die beiden Variablen sind. Jetzt können wir die entsprechenden Werte dieser Variablen lesen entsprechenden Werte dieser Variablen und sie als Parameter an die Funktion übergeben. Okay? Jetzt fordere ich den Benutzer hier auf, zwei beliebige Werte einzugeben. Und mit der Scanner-Funktion können wir diese Werte wie Personentage lesen, die Person nimmt die Adresse eines Kommas B. Okay? Jetzt müssen wir diese Variablen als Parameter an eine Funktion übergeben , damit sie die Summe dieser beiden Zahlen berechnet. Ich werde also erwägen, den Namen der Funktion zu finden, zwei Variablen zu übergeben und eine Kommaadresse der S-Parameter beizubehalten . Für diese Funktion verwende ich den Rückgabetyp so breit, dass ich das Ergebnis innerhalb dieser Funktion anzeigen kann . Zeiger verwenden. Wir führen hier auch Stern-PTR ein Komma in den Stern-PTR durch. Innerhalb dieser Funktion können wir also ein Ergebnis berechnen, können wir also ein Ergebnis berechnen indem wir den Inhalt hinzufügen, auf den PT R1 und R2 zeigen. Weil PTR eins die Adresse von a und P DR2 die Adresse von B haben wird . Okay? Betrachten Sie nun eine andere Variable namens Aureus, bei der es sich um eine Ergebnisvariable handelt. Jetzt ist Aureus gleich Stern p d R1 plus Stern PTR zwei. Und schließlich können Sie das Ergebnis ausdrucken. Das Ergebnis des Hinzufügens des Ostersonntags ist also der Schrägstrich und Sie können den RES-Wert anzeigen. Okay? Lassen Sie uns also diesen Code ausführen und die Silberreserven geben zwei beliebige Werte ein, 12,23. Und Sie werden beobachten, dass das Dessert nach dem Hinzufügen 35 plus 23 Sekunden beträgt. Definieren. So können Sie also die Adresse der Variablen als Parameter an die Funktion übergeben als Parameter an die Funktion und das Ergebnis berechnen und anzeigen. Die Unterberechnung erfolgt also mit Hilfe dieser Zeigervariablen, die gerade die Adresse der Variablen enthalten , die in der Hauptfunktion passiv sind. Okay? Dies ist also auch ein Beispiel für die Implementierung von Call by Reference. Und das wird auch so betrachtet, als würde man Zeiger als Parameter für eine Funktion verwenden. Okay? 5. Zeiger auf eine Funktion: Betrachten wir nun unser Konzept des Zeigers auf eine Funktion. Okay? Sie können also auch einen Zeiger verwenden , um auf die IF-Funktion zu zeigen. So wie wir einen Zeiger auf eine Zeigervariable verwendet haben , können Sie in C auch einen Zeiger verwenden, um auf die IF-Funktion zu zeigen. Okay? Deklarieren der Zeigervariablen ähnelt also der Funktionsdeklaration. Lassen Sie mich Ihnen hier ein Beispiel zeigen. Ich möchte jetzt grundsätzlich die Hauptfunktion implementieren. Okay? In dieser Hauptfunktion werde ich also eine Variable namens Reserved Variable betrachten. Und diesen Punkt, dass ich auf den Stern-PTR zeigen möchte, ich wollte auf eine andere Funktion hinweisen. Nehmen wir also die Funktionsdeklaration ist Addition ist zunächst der Name der Funktion, und dies ist die Funktionsprototypdeklaration. Okay, also wie deklariert man nun einen Zeiger, der auf eine Funktion zeigt? Es sollte also genauso deklariert werden, wie wir die Funktion schreiben. Okay? Also starte PTR, okay? So. Jetzt können Sie diesen PDR verwenden, wenn ich eine andere Funktion drücke, wobei VTR gleich Ich kleide oder Funktionsname ist Addition. Okay? Jetzt müssen wir die Reserve extrahieren. Reserve ist gleich, okay? Sie rufen also im Grunde die Funktion auf. Im Allgemeinen rufen Sie die Funktion auf und die entsprechenden Ergebnisse sollten in einem variablen Ergebnis gespeichert werden . Aber jetzt nehmen Sie einen PDR Zeiger auf, der auf die Funktion namens Addition zeigt. Das zu schreiben ist also nichts anderes als das Aufrufen einer Funktion namens Edition. Okay? Das entspricht also dem Aufrufen einer Zusatzfunktion hier. Also, sobald du die Wüste hast, kannst du sie konserviert ausstellen. Okay? Diese Summe sollte also personengebunden sein. Sie können das Ergebnis anzeigen. Lassen Sie uns nun diese Zusatzfunktion implementieren. Okay? Also hier, da ich bereits den Funktionsprototyp oder die Deklaration deklariert habe, die ich hier implementieren kann. In dieser Funktion lese ich nun im Grunde die beiden Variablen und die entsprechenden Werte. Ich werde einige aufführen. Okay? Diese beiden Variablen sind also in B, okay? Und ich werde den Benutzer deutlich auffordern, zwei beliebige Werte einzugeben. Und mit der Anweisung scan f können Sie das lesen. Personentage sind Personentage. Ich drücke Off a Komma b. Und schließlich kannst du a plus b reserviert zurückgeben. Schließlich können Sie ein Plus zurückgeben, wenn Sie es verdient haben. Lassen Sie uns also ausführen und die Reserve sehen , um zwei beliebige Werte einzugeben, die ich eingebe. Der erste Wert ist in, ein x-Wert ist 20, und Sie können das Ergebnis sehen, die Summe ist 30. Wie dies erreicht wird, ist eindeutig, dass wir, anstatt diese Additionsfunktion direkt aufzurufen, anstatt diese Additionsfunktion direkt aufzurufen, einen Zeiger verwenden um die Adresse der Additionsfunktion zu speichern. Okay? Mit dem Zeiger rufen wir diese Funktion auf und extrahieren die Reserve und speichern sie in einer Variablen namens result. Und dann zeigen wir das. Okay? Das ist also das Konzept eines Zeigers auf eine Funktion in C. Und es erzeugt Zeichenreserven. So können Sie zwei beliebige Werte eingeben, z. B. sechs, und das Ergebnis ist acht. Okay? 6. Zugriff auf String mit Zeigern: In diesem Beispiel sehen wir nun, wie Sie mit einem Zeiger auf eine Zeichenfolge zugreifen. Okay? Betrachten Sie also die Hauptfunktion. In dieser Hauptfunktion betrachten Sie ein Zeichen, das eine Zeichenfolge ist. Also das ist STR off ist gleich Hallo. Hallo ist diese Zeichenfolge. Denken Sie jetzt auch an Star PDR. Pdr ist der Zeiger , der auf die Basisadresse der Zeichenfolge zeigt, was bedeutet, denken Sie immer daran dass der Zeichenkettenname die Adresse selbst darstellt, unsere Basisadresse der Zeichenfolge. Sie müssen also so p d oder gleich USTR verwenden, was direkt bedeutet, USTR die Adresse selbst angibt, sodass PDR diese Adresse enthält. Mit PDR können Sie jetzt den Inhalt anzeigen, auf den dieser Videorekorder zeigt. Okay? Mit while loop können Sie diesen Inhalt also anzeigen. Dabei entspricht Stern-PTR nicht einem Nullzeichen. Stern-PTR entspricht nicht einem Nullzeichen. In diesem Fall kannst du dann Star-PTR-Inhalte mitbringen. Also prozentual d star PTR. Und Sie können PDR verwenden, um zur nächsten Position zu gelangen. Das wird also PTR plus Inkremente um eine Position sein und dann zur nächsten Position wechseln und mit dem Drucken dieses Anwärters beginnen und so zum nächsten Standort wechseln. Lassen Sie uns also diesen Code ausführen und uns das Reservat ansehen. Okay, hier, du solltest Personentage verwenden. Siehst du, sonst. Es zeigt den entsprechenden ASCII-Wert an. Okay? Also Personentage schauen, um den Charakter genau zu bekommen. Also dieselbe Zeichenfolge, hallo, wird angezeigt. Nehmen wir an, Sie haben eine Zeichenfolge wie Hello Space World. können Sie auf Hello Space World zugreifen Mit diesem Code können Sie auf Hello Space World zugreifen. Sie können das Reservat Hello Alice angezeigt sehen. Auf diese Weise. Sie können mit Hilfe einer Zeigervariablen auf den Inhalt der Zeichenfolge zugreifen . 7. String-Vergleich mit Zeigern: Jetzt werden wir den Zeichenkettenvergleich mithilfe eines Zeigerkonzepts implementieren . Nehmen wir also an, ein STR enthält r1 hallo und STR enthält void. Jetzt möchte ich einen Vergleich zwischen diesen beiden Zeichenketten mit ihren Zeigern durchführen . Lassen Sie mich also eine ganzzahlige Variable betrachten , die als Vergleichsreserve dienen kann . Und ich rufe die Funktion auf, die meine STR-CMP-Funktion ist, umgehe dabei die Parameter STR one und STR QS für diese Funktion. Und zum Schluss werde ich hier anzeigen, reserviere diese Zeichenfolge. Vergleich. Reserve ist Person, ist B. Also werden wir das Ergebnis hier anzeigen. Okay? Lassen Sie uns nun diese Funktion implementieren, die meine STR-CMP-Funktion ist. Lassen Sie mich also anhand von Hinweisen darüber nachdenken. Einer ist der Zeiger , der auf die Zeichenfolge 1.2 zeigt, ebenso wie der Zeiger auf die Zeigerzeichenfolge. Okay? Also, wie kommt ihr zum Saitenvergleich Brasilien? Es ist einfach, dass Sie im Grunde zwei Zeichenketten vergleichen und den ASCII-Wertunterschied zwischen dem ersten nicht übereinstimmenden Zeichen identifizieren müssen. Okay? Zu diesem Zweck vergleiche ich die beiden Zeichenketten, solange sie gleich sind, mit Hilfe von while loop. Okay? Nehmen wir zunächst an, ein Stern ist, S1 ist gleich Stern ist zu starten, S1 ist gleich Stern ist zwei. Und du musst auch hier nachschauen. Stern ist S1 sollte nicht gleich Null sein. Okay? Das ist also nicht gleich Null. Oder ich kann Nullzeichen sagen. Alles ist in Ordnung. Also entweder ist das nicht Null. Unser Stern ist zwei ist nicht gleich Null. Okay? Die erste Bedingung ist also das Zeichen, das sich an den Standorten STR eins befindet, dem Zeichen in STR zwei entspricht, was ein Zeiger für den Zeiger S1 und S2 ist. Und denken Sie auch an s1, welcher s1-Punkt auch immer zeigt, ist nicht gleich Null. Oder das Zeigen mit S2 ist nicht gleich Null. Nur in diesem Fall werden wir weiter vorgehen. Okay? In diesem Fall erhöhen wir also die S1 auf die nächste Position und auch als Zwei auf die nächste Position. Also wird S1 inkrementiert und S2 wird inkrementiert. Jetzt werde ich hier den Unterschied zwischen S1 und S2 zurückgeben. Also hier ist der Rückgabestern S1 minus ein Stern ist zwei. Das gibt Ihnen also den Unterschied zwischen Stern s1 und Start , der nichts anderes ist als nicht übereinstimmende Zeichen, entsprechender Unterschied. Okay? Also entweder s1 ist nicht Null oder S2 ist nicht Null, dann wird nur das, diese bestimmte Schleife wird ausgeführt, läuft, okay? Also insgesamt kann man sehen, wenn diese Bedingung zutrifft, dann wird nur sie funktionieren, oder? Das muss also wahr sein und auch das muss wahr sein. Das bedeutet, dass die Charaktere gleichzeitig übereinstimmen sollten. Keine dieser Zeichenketten erreicht Null. Okay? Zeigen Sie also, Sie können S1 sehen, Zeiger und Zeiger inkrementieren zu den nächsten Positionen. Und wann immer Sie feststellen, dass es ein nicht übereinstimmendes Zeichen gibt oder beide gegen Null gehen. In solchen Fällen musst du sofort den Unterschied zwischen diesen Charakteren finden , okay? Also diese nicht passenden Charaktere. Lassen Sie uns diesen Code ausführen und reserviert sehen. Sie können sehen, dass das Ergebnis des Zeichenkettenvergleichs -15 ist da wir Hello mit World vergleichen. Die ersten beiden nicht passenden Zeichen werden direkt auf U und W selbst getroffen. Okay? Also h minus w, der Unterschied ist eindeutig ein Unterschied von 15 Zeichen. Und dieses H steht im Vergleich zu w an erster Stelle . Deshalb führt h minus w zu -15. Das Ergebnis wird also als -15 angezeigt. Okay? Nehmen wir also an, ich möchte diese Zeichenfolge wie x, y zed ändern . Und das sagt auch x, x, z. Lassen Sie uns nun diesen Code ausführen und sehen dass das reservierte y minus x eins ergibt. Okay? So wie das. Angenommen, ich gebe das als x, x, z an und das ist x, y, z. In einem solchen Fall erhalten Sie ein Ergebnis als minus eins. Nehmen wir an, die modalen Zeichenketten sind gleich, im Grunde x, y, z und x y, z. In einem solchen Fall erhalten Sie das Ergebnis Null. Okay? 8. String Verkettung mit Zeigern: In diesem Video zeige ich Ihnen nun, wie Sie mithilfe von Zeigern eine Zeichenkettenverknüpfungsoperation durchführen . Ich verliere also das Konzept der Zeiger, um diese Zeichenkettenverknüpfungsoperation durchzuführen. Außerdem führe ich diese Zeichenkettenverkettung in einer separaten Funktion durch. Okay? Lassen Sie mich hier also die Verkettung von Zeichenketten mit Zeigern schreiben . Also werde ich zuerst die Header-Datei einschließen. Ja, TDI würde es erwischen. Jetzt in der Hauptfunktion. Betrachten Sie hier ein paar Zeichenketten. Also betrachte STR als eins gleich hello und STR gleich void. Erwägen Sie also eine größere Größe für STR eins, da ich innerhalb von STR eins verketten möchte. Das ist also richtig. Wir gehen davon aus, dass STR eins unsere 20 ist und dann verkette ich den Inhalt von SGR, STR eins. Lassen Sie mich es hier Funktion nennen, was meine STR-CAP-Funktion ist. Und ich übergebe STR ein Karma STR als Parameter für diese Funktion. Und später können wir den Inhalt von STR One anzeigen. Okay? Also ein paar Tage, nette Person, ja. Sie können Inhalte als DR1-Inhalt anzeigen. Lassen Sie uns nun diese My STR CAD-Funktion implementieren. Lassen Sie uns also diese Funktionsimplementierung betrachten. Wobei ich ein paar Hinweise weniger betrachte. Nehmen wir an, ich betrachte hier Stern ist zwei und Stern ist S1. In meiner STR-Karte. Jetzt möchte ich zum Ende der Zeichenfolge gehen , die Sie für STR 1 beobachten können Ich verwende einen Eintopf als Zeiger. Okay? Also zuerst musst du diesen S22 verwenden , den ich bis zum Ende dieser Zeichenfolge trade. Mit While Loop können Sie diesen Stern hydratisieren . S2 entspricht nicht dem Nullzeichen. In diesem Fall erhöhen Sie einfach, dass dies zwei mal eins sind. Und jetzt müssen Sie überprüfen, ob dieser in Ordnung ist. Also zuerst, Ja, wenn er schon die beiden Fäden genau dorthin zeigt. Sie müssen also Zeichen für Zeichen zugreifen und es an diese Zeichenfolge anhängen, STR eine Zeichenfolge, auf die S2 zeigt. Das kann also so mit while loop gemacht werden. Ich werde so nachsehen. Stern ist S1 entspricht nicht einem Nullzeichen. Wenn diese Bedingung zutrifft, können wir kopieren und auch inkrementieren. In einer einzigen Aussage. Ich komme so zurecht. Ein Stern ist zwei plus plus ist gleich Stern s1 plus plus. Okay? Und schließlich, nachdem die gesamte Kopierung abgeschlossen ist, müssen Sie nur noch explizit ein Nullzeichen platzieren. Was also ein Stern sein kann, entspricht zwei einem Nullzeichen. Okay? So wie das. Lassen Sie uns nun diesen Code ausführen und das Reservierte sehen. Und wir werden sehen, dass die aktualisierte Zeichenfolge Hallo Welt ist. Die erste Zeichenfolge ist ein Grußwort. Die erste Zeichenfolge enthält also zunächst nur Hallo, zweite Zeichenfolge enthält die Welt. Nach der Ausführung einer Zeichenkettenverknüpfungsoperation, die mithilfe von Zeigern implementiert wird, wobei String1 durch den Zeichenzeiger S2 und die zweite Zeichenfolge Zeiger für Zeiger S1 ausgeführt wird. Für uns sind wir mit Hilfe von stupendous zum Ende der ersten Zeile übergegangen . Und später haben wir angefangen , mit dem Helfer für s1 Zeichen für Zeichen in die Position zu kommen, wohingegen zwei Zeichen zeigt. Schließlich weisen wir also einen Status zu, der dem Nullzeichen entspricht , was bedeutet, dass wir das Nullzeichen am Ende der Zeichenfolge nach der Verkettung angeben das Nullzeichen am . Jetzt können wir auf den Inhalt von STR one zugreifen, das verkettete Ergebnis von STI R1 und R2 enthält. So wird es also funktionieren. 9. Länge der Zeichenfolge mit Zeigern bestimmen: Lassen Sie uns nun die Länge dieser Zeichenfolge mit der Zeigervariablen berechnen . Sie können also beobachten, dass ich einen Zeichenkettennamen wie HelloWorld und Star verwendet habe. Ptr ist die Zeigervariable die auf die Basisadresse zeigt, die STR ist. Jetzt können Sie beginnen, die Anzahl der Zeichen in dieser Zeichenfolge zu zählen , was der Länge dieser Zeichenfolge entspricht. Sie können davon ausgehen, dass n gleich Null ist und die Länge der Zeichenfolge darstellt. Mit der While-Schleife können Sie hier nun entweder den PTR während des Sternes nicht gleich einem Nullzeichen behandeln . Also, wenn das der Fall ist, dann kannst du die Länge der Zeichenfolge erhöhen, okay? Weil du jedes einzelne Zeichen in der Zeichenfolge zählen musst. Also Alien Plus, Plus und auch Moody's PDR zur nächsten Position. Nachdem das erste Zeichen gezählt wurde, muss es zum zweiten Zeichen gehen. Okay? Sobald also alle Zeichen gezählt sind, können Sie hier die Länge der Zeichenfolge anzeigen. Also Länge der Saite, einfach. Personentage sollten fremd sein. Mit einer Variablen von alien können Sie die Länge der Zeichenfolge anzeigen. Lassen Sie uns nun diesen Code ausführen und sehen, dass die Länge der Zeichenfolge 11 ist. Es ist also klar, dass diese Zeichenfolge insgesamt 11 Zeichen enthält, einschließlich Abstandshaltern, insgesamt sind Zitronenzeichen vorhanden. So können Sie die Länge der Zeichenfolge ermitteln. Okay? Sie können auch versuchen diesen STRS-Parameter an die Funktion zu übergeben und die Länge der Zeichenfolge und einer anderen Funktion zu identifizieren . Also lass es mich dir hier zeigen. PTR ist also gleich STR. Und wir werden eine separate Funktion implementieren , um die Länge der Zeichenfolge zu ermitteln. Also würde ich meine eigene Funktion schreiben, nämlich den MISTRA Alien. Und hier verwende ich die Zeigervariable wie Stern, PTR-Zeiger. Und du wirst sehen, ob PDR gleich STR ist. Hier. Da wir den Zeichenzeiger übergeben, muss dies auch ein Zeichenzeiger sein. Okay? Die Idee ist also, einfach eine Variable namens EN zu berücksichtigen, okay? Um die Länge der Zeichenfolge zu ermitteln. Und das entspricht, nenne diese Funktion Meine STR-Alien-Funktion. Und übergebe diesen STR als Parameter. Okay? Da alles, was wir in der anderen Funktion berechnen , müssen Sie diesen Zeiger in dieser Funktion überhaupt nicht verwenden. Also nochmal, das entspricht meinem STR-Allel und abseits von STR übergebe ich einen STRS-Parameter an meine STR Len-Funktion. Und schließlich können Sie hier die Länge dieser Zeichenfolge anzeigen. Druckt die Länge der Zeichenfolge. Die Länge der Zeichenfolge ist hier. Sie können die Länge der Zeichenfolge mit der Variablen EN anzeigen. Und Sie müssen diese MISTRA LEN-Funktion implementieren. Mit Hilfe von Zeigern ist das also Zeichenzeiger. Lassen Sie uns also einen anderen Zeichenzeiger wie Car Star M in Betracht ziehen . Okay? Und zunächst gehe ich davon aus, dass temp dem PTR-Modus entspricht, wobei PTR und Temper auf die Basisadresse der Zeichenfolge STR zeigen. Jetzt möchte ich nur auf den Temple Point eingehen. Also obwohl dieser Stern m nicht gleich einem Nullzeichen ist, können wir das hier behandeln. Sie können diesen Temp-Zeiger also an die nächste Position bewegen. Okay? Da es also nur eine Zeile gibt, kannst du dieses M plus plus überspringen. Okay? Sobald die Sterntemperatur auf ein Nullzeichen zeigt, können Sie endlich hierher zurückkehren. **** minus PTR. Wie wir wissen, wird die Zeichenposition nur ein Byte einnehmen. Okay? Temp zeigt jetzt also auf die letzte Position in der Zeichenfolge, und PDR zeigt bereits auf die erste Position in der Zeichenfolge. Es wird dir also den Unterschied geben, oder? Und das wird die Länge der Schnur werden. Okay? Lassen Sie uns also diesen Code ausführen und das Ergebnis sehen. Die Länge der Zeichenfolge ist kleiner als. Also. Das ist eine Zeichenfolge, oder? Hallo Weltraum, Welt, insgesamt sind 11 Charaktere da. Und wir können das gleiche Ergebnis erzielen. Okay? Auf diese Weise können Sie der Funktion einen Zeichenkettennamen als Parameter übergeben und den Zeichenzeiger verwenden, um auf diese Zeichenfolge zu zeigen und die Länge der Zeichenfolge hier zu berechnen. Okay. 10. Zeiger & 1D Arrays: Jetzt werden wir über Zeiger und eindimensionales Addieren sprechen . Wenn Sie dieses Konzept von Zeigern und eindimensionalen Arrays beachten . Zuerst zeige ich Ihnen, wie dieser Zeiger verwendet werden kann, um auf den Inhalt in diesem eindimensionalen Array zuzugreifen. Okay? Also wann immer schreibe es klarer. Nehmen wir nun an, Sie sind fünf Jahre alt. Okay? Sie werden also beobachten, dass es zusammenhängende Phi-Speicherorte geben wird . Sie können also sehen, dass dies eine RNA namens yay ist. Okay. Dabei wird die allererste Stelle integriert, die vom Knie abgewandte. Das ist dein 234. So. Mit dem Zeiger können Sie jetzt auf Inhalte an jedem dieser Orte zugreifen. Okay? Nehmen wir an, ich möchte zur Kompilierzeit die Liste der Werte in diesem Array speichern . Nehmen wir an, ich lagere so, 102-030-4050. In diesem Fall sind dies also die Werte, die hier gespeichert werden und gespeichert werden. 20 wird hier gespeichert, 30 wird hier gespeichert, 40 wird hier gespeichert und 50 werden hier gespeichert. Betrachten Sie nun die Basisadresse. Nehmen wir an, dies ist die Basisadresse des Arrays, die 2000s ist. Und das ist 2004, denn die Wüste nimmt vier Byte ein. Das ist 2008, das ist 2012 und das ist 2016. Dies sind die entsprechenden Adressen. Jetzt können wir mit dem Zeiger tatsächlich auf die Basisadresse des gesamten Arrays zeigen. Dies kann also angezeigt werden, nehmen wir an, indem wir eine Zeigervariable verwenden. Denken Sie also an den Stern PTR. PTR ist also die Zeigervariable, die ich verwende. Dieser PDR kann auf die Basisadresse des Arrays zeigen, Adresse von a von Null, z. B. können Sie wie diese Adresse von a von Null speichern. Oder einfach EH, Selfie steht für die Basisadresse. Okay? Wenn Sie nun diese Aktion ausführen, wobei PDR der Adresse aus hier von Null entspricht, wird diese Zeigervariable, Korridor, PTR, berücksichtigt . Und es speichert die Adresse der Hauptzentren des gesamten Arrays. Haben Sie die entsprechende Adresse auf Null gesetzt, die ein 2000er ist. Dadurch werden 2000 gespeichert. Npr zeigt auf diesen Speicherort. Okay? Mit PTR können Sie jetzt auf jedes einzelne Element innerhalb des Arrays zugreifen . Zu diesem Zweck nehme ich eine weitere Schleifenvariable namens i. Also schreibe ich ein Beispiel für loop, um mit eines Zeigers auf jedes einzelne Element innerhalb dieses Arrays zuzugreifen Hilfe eines Zeigers auf jedes einzelne Element innerhalb dieses Arrays zuzugreifen. Ich ist also gleich Null. Und dann betrachte I als weniger als fünf, weil das Array fünf Elemente enthält. Mit der Anweisung print f können wir nun jedes dieser Elemente anzeigen. Druckt f,% d Schrägstrich t. Jetzt zeige ich an, dass PTR auf diese Position zeigt. Wie kann ich das Element bekommen? Also wenn ich PTR meine, komme ich auf 2000er. Wenn ich einen Stern-PTR schreibe, erhalte ich Inhalte innerhalb 2000 Speicherplätzen, was zehn entspricht. Und danach möchte ich auf diesen Inhalt zugreifen, der 20, dann 30, dann 40, dann 50 heißt dann 30, dann 40, , so. Also in einem solchen Fall, den ich schätze, werden wir diesen aktualisierten Wert verwenden, oder? Starte weniger PTR. Ich beginne mit DR. Place. Dieser I-Wert wird also von I gleich Null bis I gleich vier behandelt . Und das ist ein Star von PTR Platz I. Wenn ich also mit PDR plus I anfange, ist das eigentlich gleichbedeutend mit, okay. Sie werden also beobachten, dass der Stern aus dem Videorekorder kleiner als Null ist. Dies entspricht dem Schreiben von u von Null. Okay? Wenn ihr bedenkt, dass I gleich eins ist, wird daraus Stern des PTR plus eins. Und das wird einem entsprechen. Okay? Und wenn ich Stern von PTR L2 schreibe, wobei I gleich zwei ist, bedeutet das in diesem Fall gleiche Energie zwei zu entlassen und so weiter. Ebenso seht ihr hier den Stern des PTR plus vier. Das sind nichts als vier, okay? So wie das. Und wenn im Array n Elemente gespeichert sind . In diesem Fall können Sie also einfach Stern vom VTR weniger abschreiben. En ist gleich e off. Okay? Oder es kann K sein, einfach PDR plus k ist gleich a von k so. Okay? Lassen Sie mich nun im Grunde den gesamten Inhalt des Arrays mit Hilfe von Zeigern selbst lesen den gesamten Inhalt des Arrays mit Hilfe und den Inhalt des eindimensionalen Arrays anzeigen. Nehmen Sie also zuerst die Header-Datei. Und innerhalb der Hauptfunktion werde ich hier ein Array betrachten. Okay? Stellen Sie sich zum Beispiel eine Erhöhung e von 20 vor und ich verwende zwei Variablen in non dye inside und Sie können die Anzahl der Elemente oder die Länge des Arrays speichern . Zu diesem Zweck können Sie diese Erklärung vorlegen. Für die Anzahl der Elemente geben Sie einfach die Größe ein. Mit der Anweisung scan f können Sie diese bestimmte Größe also häufig in variable Qualität und Adresse einlesen . Jetzt fordern wir den Benutzer mit Scully auf, die vielen Elemente zu leiten oder einzugeben. Hier können Sie nach Geschlecht fragen, Prozent sind die Elemente, also n Elemente. Wir bitten den Benutzer, einzutreten. Jetzt verwende ich für Loop, ich gehe zur Achse, okay? Also direkt hier, ich nehme nicht einmal irgendeinen Sinn darin, Airy zu verwenden, nur ich greife hier zu. I gleich Null, I weniger als n I plus plus. Jetzt können wir mit der Anweisung scan f speichern. Das ist also ein Scan von 5 Personen pro Jahr plus i. Okay? Also speichern wir innerhalb des Arrays. Wenn Sie nun mit print f ähnlich anzeigen möchten, können Sie einfach sagen, dass Elemente des Arrays angezeigt werden. Und danach kannst du das einfach für Loop verwenden. I gleich Null I weniger als n I plus plus. Und mit print f Statement können Sie so anzeigen, als wäre diese Person ein D-Stern oder ein Plus, wenn der Inhalt innerhalb dieser bestimmten Adresse abgerufen wird. Sie können diese Hauptfunktion schließen. Dieser Code dient also hauptsächlich zum Lesen mit dem Konzept der Zeiger. Und das verwendet das Konzept der Zeiger. Wir zeigen den Inhalt eines eindimensionalen Arrays an. Oder Sie können direkt einen anderen Zeiger nehmen und auf diese Basisadresse des Arrays zeigen und mit dem Titrieren beginnen. Okay? Also du kannst es so oder so machen. Lassen Sie mich Ihnen ein Beispiel zeigen, in dem ich es modifizieren und Ihnen verschiedene Möglichkeiten aufzeigen werde. Das wird also als Zugriff auf den Inhalt des Arrays betrachtet. Hier. In der Hauptfunktion. Ich werde es hier hinzufügen. Lassen Sie mich 20 Komma n Komma i absehen. Jetzt fordere ich den Benutzer auf, im Grunde den Wert n einzugeben. Sobald Sie also Werte mit der Scanner-Anweisung eingegeben haben, können Sie sie in die Variable in einlesen. Okay. So können Sie den Benutzer später auffordern , Person D als Werte anzugeben. Und genau Sie müssen eine gerade Anzahl von Werten erhalten. Okay? Mit for loop können Sie dann beginnen, diese Werte in diesem Array mit der Notation der Zeigernotation zu speichern . Mit der Anweisung scan f können Sie also wie diese Person Tage von d schreiben. Einfach ein Plus I. Das bedeutet, dass ein Plus I nichts anderes ist als die Adresse einer Adresse aus Ihrer Datei. Sie können also sehen, dass ein Plus cy einem Phi entspricht. Okay? Einfach so. Jetzt, hier. Ebenso möchte ich diesen Inhalt anzeigen. Mit dem Drucker können Sie also einfach Array-Elemente anzeigen. Und nochmal, hier for loop verwenden. Und statt eines Scanners müssen Sie die Anweisung printf verwenden , um den Inhalt anzuzeigen. Tage gehörloser Personen, der Stern von plus I. Dadurch erhalten Sie den Inhalt innerhalb dieses Speicherorts. Und wenn ich so schreibe, steht das für EOF, was bedeutet, dass es einem Stern von plus I entspricht einem Plus rechts beginnen, entspricht a oder PHI. Lassen Sie uns also diesen Code ausführen und das Ergebnis sehen. Okay? Also hier müssen wir ein Semikolon verwenden. Geben Sie den Wert n ein, ich gebe die Werte fünf ein. Jetzt werden Sie aufgefordert, fünf Werte einzugeben. Nehmen wir an, 1020304050 sind die Werte, die ich angegeben habe. Sie können sehen, dass dieselben Werte gedruckt werden, okay? Also verwende ich hier eine Person Tage, vier Tage, damit bei der Anzeige der Elemente etwas Platz bleibt. Also habe ich diesmal einen Wert von 6.000 eingegeben. Betrachten Sie also verschiedene Werte wie 12, 304-203-5663 für P2. Okay, das sind die sechs Elemente, die ich angegeben habe. Jetzt können Sie sehen, wie unsere Elemente 1234, 2035, 0660, 3402 angezeigt werden. Das Gleiche. Anstatt also Stern plus i zu schreiben, okay, kannst du direkt e von I schreiben. Das ist eine allgemeine Schreibweise, die wir während der Arbeit verwendet haben , die ist okay, also adressiere aus, du bist aus. Lassen Sie mich Ihnen hier in einem Rennen zeigen, das ist die Notation, die wir verwendet haben. Nehmen wir n Werte für 122.345,56 an, siehe den gleichen Wert, also den Spread. Okay? Anstatt das Akronym direkt zu verwenden, können Sie jetzt auch Zeiger verwenden. Ein großartiger Punkt dort, ein Integer-Zeiger. Okay? Du kannst diesen PTR verwenden, um zu zeigen. Ich ziehe das Off Zero aus. Mit dem Zeiger können Sie jetzt hier auf alles zugreifen. Schreiben Sie einfach PTR plus I. Und hier, anstatt Ihre Datei zu schreiben, können Sie start off PDR schreiben. Segne. Okay. Das wird also auch funktionieren. Dieses Mal habe ich den Wert n als fünf angegeben. Die Elemente sind n 2030, 40.50. Sehen Sie sich auch hier die Anzeige unserer Elemente 102-030-4050 wie folgt an. Okay? 11. Zeiger & 2D-Arrays: In diesem Video werden wir besprechen, wie man mithilfe des Zeigerkonzepts auf ein zweidimensionales Array zugreift. Das sind also Zeiger und 2D-Arrays. Das sind zweidimensionale Arrays. Okay? Nun, wenn Sie hier generell die NRA in Betracht ziehen. Nehmen wir an, ich betrachte ein Array, das ein zweidimensionales Array ist , wie 23. Das bedeutet Meskalin Eric, oder welches enthält wie viele Rosa? Es gibt also zwei Zeilen und drei Spalten. Das sind zwei Zeilen und drei Spalten. Also Zeilennummer, und dann sind das alles Spaltennummern, oder? Okay? Also, wenn Sie sich diese Standorte ansehen, steht das für Null in Ihrem Büro, okay? Und das steht für deinen 01. Das ist auch das All Zero. Das ist eine 0 von 10, und das ist deine 11. Das sind die alten 12, so. Wenn ich nun einen Wert an diesem bestimmten Ort speichern möchte , schreiben wir in der Regel die Adresse, also ihr alle für Null Null. Okay? Das entspricht eindeutig dem Schreiben von Startjahr plus Null plus Null mit Zeigern, okay? Nehmen wir an, Sie möchten diesen Contender anzeigen, ist das Aus mit Nullen, Nullinhalt , den Sie mit der Printf-Anweisung anzeigen möchten. Dann ist das Äquivalent in Zeigern. Es ist ein Stern aus, beginnen Sie mit EA plus Null plus Null. Okay? Diese beiden sind also gleichwertig. In ähnlicher Weise sind diese beiden gleichwertig. Lassen Sie mich es Ihnen hier deutlich zeigen. Wenn ich meine, dass es sich bei der Darstellung um den Adi handelt, okay? Auf dem, ab auf drei, demselben Dachboden. Oder ist dieses Jahr okay? Also dann meine ich hier, es stellt tatsächlich einen Zeiger auf die erste Zeile dar. Okay? Das ist also ein direkter Zeiger auf die erste Zeile. Wenn ich also k plus i schreibe, ist das ein Zeiger auf das IEP bis, okay? Zeiger auf Ich weiß, z.B. wenn ich hier Stern plus I abschreibe. Und das steht für den Zeiger auf das erste Element im Auge und durch, okay? allererste Element in I, wirf jemanden, wenn ich schreibe, fang hier an, plus I plus j. Das ist also ein Hinweis auf das, was ich in die Augen gebracht habe. Okay? Zeiger auf das Element. Okay? Also ich weiß, wann ich meine, Start off, plus I plus j. Das ist der Wert, der in der IJ Location gespeichert ist , okay? Also, was ist nichts anderes als der Wert, unter dem gespeichert ist, okay? In einer zusätzlichen Darstellung können Sie den Wert sehen, der an einer Position von I j gespeichert ist. Das ist die Bedeutung hier. Okay? Also, wann immer wir die Elemente im Grunde in ein zweidimensionales Array einlesen wollen , okay? Und zeigen Sie auch die Elemente aus dem zweidimensionalen Array an. Also können wir so schreiben. Zuerst füge ich die entsprechende Header-Datei stdio.h hinzu. Jetzt benutze ich diese Hauptfunktion, okay. Soweit Sie sehen können, gibt es und fügen acht vierteljährliche x hinzu und die Größe beträgt fünf mal fünf. Okay? Und ich ziehe hier auch p, q für die Angabe der Zeilengröße und der Spalte Sicer INJ oder der Loop-Variablen in Betracht q für die Angabe der Zeilengröße und . Also drucken wir zuerst oder zeigen dem Benutzer an, um die Reihenfolge der Matrix und die Reihenfolge der Matrix einzugeben . Sie müssen also diese Reihenfolge der Matrix lesen. Person, im Grunde Personentage, die Adresse von p und Adresse von q, denn p steht hier für die Zeilengröße und q für die Spaltengröße. Dann können Sie den Benutzer auffordern, die Reihenfolge der Matrix einzugeben , sodass die entsprechenden Elemente Anzahl der Elemente dem Pin zu Q entsprechen, oder? Also kann ich hier zwischenmenschliche Elemente schreiben. Und die Anzahl der Elemente sollte zwischen zwei Q ( Anzahl der Elemente) liegen. Okay? Sobald Benutzer also angefangen haben, diese vielen Aluminiumteile einzugeben, können Sie sie innerhalb des Arrays lesen. Mit einer For-Schleife. Ich bin gleich Null und ich iteriere durch die ganze Zeile. Also i weniger als p I plus, plus. Und in ähnlicher Weise gilt für j gleich Null, j kleiner als Q, j plus. diesen Scan der Aussage verwenden, können wir lesen, indem wir diesen Prozentsatz d schreiben . Im Allgemeinen werden Sie heutzutage die Adresse abschreiben oder welcher Name auch immer hier steht, den ich für MS Excel gehalten habe , also müssen Sie unser Kleid abschreiben. Aus. I j. haben wir hier schon besprochen. Ich ziehe mich aus EX sah Phi J ist nichts aber du musst so schreiben, okay? Das ist ein Stern aus x plus I plus j. Wenn Sie also Zeiger verwenden, entspricht es dem Anfang x plus I plus G. So. Jetzt verwenden wir eine gescannte F-Anweisung, die wir gerade lesen. Und später werden wir den Inhalt hier anzeigen. In Form einer Matrix, bei der es sich um ein zweidimensionales Array handelt , handelt es sich also sich um ein zweidimensionales Array handelt , um Matrixinhalte, die Sie so anzeigen können. Bei der Anzeige können Sie dies also wiederum für Schleife I gleich Null I weniger als p I plus plus plus verwenden . Dies zeigt die Zeile an. Und dann spaltenweise, für j gleich Null, j kleiner als Q j plus plus. Jetzt können wir so drucken, eine Person ausdrucken, die da sein sollte. Das ist der Zweck des Druckens. Du musst explizit Stern oder Stern von uns abschreiben plus j, okay? Denn das entspricht dem einfachen Schreiben von X von IJ. Okay? Für zweidimensionale Inhalte benötigen Sie also zwei Sterne, um auf den Inhalt an diesem Ort zuzugreifen. Dann müssen Sie eine neue Zeile verwenden, sodass nach jeder Zeile zur neuen Zeile gewechselt wird, um die nächste Zeile zu drucken und diese dann zu schließen. Das ist also das Format, das wir hier verwenden , um den Inhalt des zweidimensionalen Arrays mit Hilfe von Zeigern grundsätzlich zu lesen und zu schreiben . Okay? Lassen Sie uns dies nun implementieren und prüfen, ob Änderungen erforderlich sind. Also hier zum Stylen der Respect You Header-Datei stdio.h. Und innerhalb dieser Hauptfunktion betrachten wir ein Beispiel-Array, das ein zweidimensionales Array ist. Okay? Stellen Sie sich vor, es gibt zwei Zeilen und drei Spalten. Und ich werde sie zum ersten Mal initialisieren, okay. 456. Und ich werde diese Elemente einfach mit Zeigern anzeigen. Okay? I ist eine Schleifenvariable und eine Jason-Schleifenvariable. Nun, mit for loop, können wir so behandeln, ich gleich Null, I weniger als zwei, I plus, plus. Okay? Weil er die Zeilengröße repräsentiert. Betrachten Sie nun die dritte Spaltengröße. Also J gleich Null, j weniger als drei, j plus, plus. Sie können das hier ausdrucken. Druck f. Normalerweise schreiben wir eine Person, sie sollte es sein. Okay. Ich, Notation. Um den Inhalt in Form einer Matrix anzuzeigen. Also Zeile für Zeile. Okay? Also, wenn du willst, kann ich eine Nachricht schreiben. Tricks. Sie können den Inhalt der Metriken anzeigen. Lassen Sie uns das jetzt ausführen und sie uns ansehen. Um also im Grunde Elemente mit etwas Leerzeichen dahinter anzuzeigen , müssen Sie das WD-Format für Personentage schreiben, wobei w für das Opfer steht. Also habe ich drei Zeichen aufgebraucht. Ein Zeichen wird gedruckt und die restlichen zwei Zeichen dienen als Leerzeichen. So drucken wir im Allgemeinen einen zweidimensionalen Adi. Jetzt ersetze ich das durch die entsprechende Schreibweise mit Zeigern, das ist ein Stern aus, beginne mit E a plus I plus j. Okay? Lassen Sie uns nun diesen Code ausführen und das Ergebnis sehen. Sie können Matrizen sehen, es gibt also zwei Zeilen und drei Spalten. Okay? Dieselbe Matrix wird in dieser Lektion angezeigt. Also wie gesagt, es gibt zwei Indizes, weil dies ein zweidimensionales Array ist. Um auf den Inhalt zuzugreifen, musst du hier einen Doppelstern verwenden, das ist ein Stern und ein weiteres Stern-Sub l. Wenn du nur einen Stern schreibst, dann zeige ich dir, was hier passiert. Wenn du nicht an Sterne schreibst und einen Stern wie diesen schreibst, dann druckst du am Ende alle Adressen aus, okay? Nehmen wir an, da es sich um einen Kunstpinsel handelt, können Sie sehen, dass das Ergebnis dieser ist. Dies sind alles Adressen , die für diese bestimmte Matrix zugewiesen sind . Okay? Wenn Sie also auf den Inhalt zugreifen möchten, müssen Sie hier einen anderen Stern verwenden. Okay? Es ist also eine völlig knappe Rate. Lass uns jetzt laufen und schauen ob du so sehen kannst, was du bekommen wirst. Nehmen wir an, wenn ich im Grunde den Inhalt der Matrix lesen möchte , dann können Sie in diesem Fall zur Laufzeit so speichern, z. B. das sind hier etwa zehn, okay? Und auch das ist eine weitere 1010 mal zehn zweidimensionale Mary, die ich nehme. Sie können den Benutzer jedoch auffordern, grundsätzlich die Reihenfolge der Matrix einzugeben. Okay? Drucker bestellen also oft Pausen. Okay? Jetzt musst du diese spezielle Matrix lesen , die Person DSD ist, personenbasiert, die Adresse von p, Komma, Adresse von q, okay ? Später müssen Sie den Benutzer auffordern , diese vielen Elemente einzugeben, z. B. Endo Prozent sind die Elemente. Okay? Das heißt also genau in Q-Elemente. Sobald der Benutzer anfängt, Boltzmann-Elemente einzugeben, können Sie mit dem Lesen beginnen. I kleiner als p, weil p die Zeilengröße darstellt. Und j ist gleich Null, j kleiner als Q, j kleiner als Q, j plus plus, weil j die Spalte darstellt, die a ist. Okay? Q steht also für diese Größe der Spalte. Und jetzt verwende ich diese Scanner-Anweisung, um diese Elemente zu lesen. Also sind Personentage okay. Wie die Adresse, die ich Ihnen bereits gezeigt habe, entspricht dies eindeutig der Adresse, oder? Sie müssen das Element also innerhalb dieser Adresse speichern und können dann darauf zugreifen. Da wir also die Reihenfolge p mal q als Reihenfolge genommen haben, müssen Sie diese Reihenfolge p mal q verwenden , um diese Elemente anzuzeigen. Lassen Sie uns also diesen Code ausführen und das Ergebnis sehen. Geben Sie die Reihenfolge der Matrix ein, z. B. ist die Reihenfolge der Matrix drei mal drei. Sie werden aufgefordert, neun Elemente einzugeben. Die Elemente sind 123-45-6789, okay? Und Sie können jetzt sehen, dass die Matrix 123-45-6789 lautet, so. Okay? Auf diese Weise können Sie das Zeigerkonzept verwenden, um darauf zuzugreifen und es im zweidimensionalen Array zu speichern. Okay? 12. Doppelzeiger: nächste ist ein Doppelzeiger oder ein Zeiger auf einen Zeiger in C. Okay? Also wirst du, ähm, also hier ist ein Zeiger auf einen Zeiger oder Doppelzeiger. Die allgemeine Definition eines Zeigers auf einen Zeiger oder eines Doppelzeigers ist also ein Zeiger , der auf die Adresse eines anderen Zeigers zeigt, okay. Wird also als Punkt direkt am Binder oder Doppelzeiger betrachtet. Also lass mich hier Winder Cooling Address von einem weiteren Zeiger schreiben , der unser Kleid ausruft. Und ein anderer Zeiger heißt Punkt. Wir zeigen auf. Sie haben einen Zeiger auf einen Zeiger oder Doppelzeiger gewertet. Also, was ist die allgemeine Syntax eines solchen Doppelzeigers? Zeiger auf einen Zeiger? Lassen Sie mich also diesen Index Sulfat bezeichnen. Die allgemeine Syntax wird also jeden Datentyp berücksichtigen, aber sie kann Wüste oder Zeichen oder Float oder Doppel alles bedeuten . Also Datentyp aber Stern, Stern, Zeiger auf einen Zeiger. Dieser Variablenname kann also alles sein, aber Sie müssen zwei Sterne berücksichtigen, die für einen Doppelzeiger stehen, Zeiger auf einen Zeiger. Sehen wir uns nun ein Beispiel für die Arbeit mit Variablen an. Also, okay, Zeiger auf einen Zeiger innerhalb der Hauptfunktion. Okay? Also zuerst, nachdem ich die Header-Datei eingebunden habe. Und innerhalb der Hauptfunktion überlege ich, ob das verfügbar ist, was hält. Und ich denke auch über einen einzelnen Zeiger oder einen normalen Binder nach. Und das ist ein Doppelzeiger oder ein Zeiger auf einen Zeiger. Okay? Also werde ich zuerst die Adresse von a zu Punkt B und die Adresse von b in den Zeiger pb speichern. Okay? Jetzt können Sie den Inhalt hier mit Star KPI oder Doppelstern p anzeigen. Also ich zeige es dir, wann immer du den Wert von k anzeigen willst, du kannst so schreiben. Oder Sie können auch eine Zeigervariable verwenden, bei der es sich um ein Stern-P handelt . Sie haben eine andere Möglichkeit, auf denselben Inhalt zuzugreifen. Beide zeigen auf einen Zeiger , der vorhanden ist d, Doppelstern p. Okay? Damit können Sie auf Inhalte innerhalb des Speicherorts zugreifen. Ja. Okay. Lassen Sie uns hier sehen, wie das funktionieren wird. Zuallererst ist es eine Variable und sie hat den Wert Zehn. Okay? Und P ist ein Punkt. Das Urteil Agisoft, was bedeutet, berücksichtigen Sie, ob Sophia einen Speicherplatz von 2000 und die Gebühren, wenn die Zeigeradresse Sophie Sofia eine 2000 ist und p auf diesen Speicherplatz zeigt. Okay? Nein, für jeden Zeiger wird auch ein Zinssatz angegeben , da dieser an einem beliebigen Speicherort gespeichert wird. Und der Speicherplatz wird eine Adresse haben. Nehmen wir an, 3.000 ist die Adresse der Zeigervariablen p. Nun wird die entsprechende Adresse der Zeigervariablen in einem anderen Punkt gespeichert , der ein Zeiger auf einen Zeiger ist. Das ist also ein Zeiger auf einen Zeiger und wir behalten die Adresse von p. Also 3.000. Sie können sehen, dass der BB-Zeiger auf einen Zeiger die Adresse von p enthält. Okay? Wenn Sie nun mit dem Drucken des Werts E beginnen, erhalten Sie das Ergebnis als Zehn. Okay? Wenn Sie dann mit dem Drucken beginnen , werden wir sehen, wie das bewertet wird. Stern p steht für einen Stern. B bedeutet 2000er Jahre. Der Inhalt von Pluto und der Speicherplatz werden angezeigt, was wiederum zehn ist. Okay. Sehen wir uns nun an, wie dieser Zeiger auf einen Zeiger ausgewertet wird. Hier drucken wir also eindeutig Doppelstern-BP, was als Stern bewertet werden kann. Stern. Der Pb-Gehalt beträgt 3.000. Von hier bis hier, Inhalt innerhalb von 3.000 Speicherplätzen. Also, was ist der Inhalt in 3.000 Speicherplätzen hier? Der Inhalt innerhalb von 3.000 Speicherplätzen entspricht also eindeutig den 2000ern. Fangen Sie also mit den 2000ern an, was Inhalt innerhalb des Speicherorts bedeutet Die Antwort lautet zehn. Um dasselbe anzuzeigen, können Sie diese Aktionen ausführen. Dies sind also die verschiedenen Möglichkeiten , auf dieselben Inhalte zuzugreifen. Das bedeutet, dass derselbe Inhalt entweder direkt mit der Variablen oder mit einer Zeigervariablen oder mit einem Doppelzeiger oder einem Zeiger auf einen Zeiger geändert direkt mit der Variablen oder mit einer Zeigervariablen oder mit einem werden kann. So wie das. Sie können ein Programm schreiben , das einen Zeiger auf einen Zeiger und auch einen einzelnen Zeiger verwendet . Lassen Sie mich Ihnen jetzt ein Beispiel zeigen, okay, für diesen Zeiger auf einen Zeiger. Soweit die Header-Datei noch einmal zu überdenken . Dann innerhalb der Hauptfunktion. Betrachten wir also eine Variable wie E ist gleich zehn und Stern, Doppelstern ist Zeiger auf einen Zeiger. Jetzt benutze ich P ist gleich Ich ziehe mich aus. Und noch einer ist Pb genau dort. Also hat Pb die Adresse von p. Okay? Um den Wert von Yi anzuzeigen, können Sie nun auf verschiedene Arten zugreifen. Hier. Ich benutze New Line, okay? Direkt, Sie können Variable noch verwenden. Okay? Also hier schreibe ich , dass a gleich ist. In ähnlicher Weise möchte ich mit Hilfe eines einzelnen Zeigers, der ein Stern p , star p ist, auf den entsprechenden Inhalt zugreifen . Ich werde es hier ausstellen. Und danach müssen wir den Doppelstern p drucken. Stern p ist gleich Prozent ist der mit einem Schrägstrich versehene Doppelstern p. Okay? Lassen Sie uns nun diesen Code ausführen und uns das Reservat ansehen. Hier also das ungültige Typargument des unitären Operators Star ausführlich. Lassen Sie uns das so erklären. Okay? Stellen Sie sich also einen Doppelstern B vor, okay? Und das ist ein einzelnes Sternchen p. Also, was bedeutet der Wert, der darin gespeichert ist, oder? Okay? Und er taucht hier nur in neun Zeilen auf. Okay? Also eine Sache, die ich hier mache, das ist int Star p ist gleich, und das ist e1 Stern, Stern p ist gleich. Macht einen Argumenttyp oder einen Grabstern ungültig. Okay? Entschuldigung, hier. Das Problem ist, dass wir hier bereits PSD Singlepoint genommen haben. Sie stehen unter Doppelstern P. Doppelstern p, was der Name des Doppelzeigers ist. Wir haben also eine einzige S. geschrieben. Das stimmt. Es zeigt, dass es im Grunde genommen PPE ist der Name des Doppelzeigers, den wir genommen haben. Wir müssen den gleichen Namen verwenden. Sie können sehen, dass der Gewinn a gleich zehn Stern ist . P ist gleich zehn. Der Doppelstern p entspricht zehn. Okay? können Sie den Inhalt anzeigen, okay? 13. Beispielprogramm in Doppelzeiger: Lassen Sie mich ein Beispiel betrachten, das einen einzelnen Zeiger und einen Doppelzeiger beinhaltet. Okay? Nehmen wir also an, dass X gleich zehn ist. Und ich betrachte unsere verschiedenen Variablen wie Stern p ist ein einzelner Zeiger und Doppelstern-PTR ist ein Zeiger auf einen Zeiger. Okay? Also hier denke ich, dass p entweder Sophie Excel entspricht. Nper entspricht der Adresse von p. Okay? Das heißt, wenn Sie eine Aktion über den Zeiger p oder über den Doppelzeiger PTR ausführen . Das wirkt sich also auf den Speicherplatz aus , der Variablen zugewiesen wird , außer dass der Inhalt in der Variablen x aktualisiert wird. Nehmen wir also an, ich führe Doppelstern-PDR gleich zwei aus, okay? Einzelstart p plus 25. Okay? Nun endlich, wenn Sie den Wert von x drucken, wirkt sich das auf den Wert von x oder den Nullwert von x aus. Okay? Lassen Sie mich Ihnen das Ergebnis zeigen. Das Ergebnis sollte 35 sein, okay? Warum ist 35 die Antwort? Weil Sie den Doppelstern beobachten können repräsentiert PTR tatsächlich den Inhalt innerhalb der Variablen X. Das wird nun hier sein, Stern p plus 25. p zeigt also auf einen Speicherplatz x und enthält den Wert zehn. Also zehn plus 2510 plus 25 ergibt den Wert 35. PTR ist also der Zeiger , der auf diesen Speicherort zeigt, und sein Wert wird auf 35 aktualisiert. Und später zeigen wir den x-Wert an. Im Moment ist der x-Wert also auf 35 aktualisiert, was bedeutet, dass dies die gleiche Stelle ist, an der wir uns auf x beziehen, und auch gleich Stern p. All diese Werte sind also gleich 35, x ist gleich 35. Startup ist das, wenn ich einen Doppelstern eingebe, ist PDR 35. So können Sie den Inhalt an einem Speicherort mit einem einzelnen Zeiger oder Doppelzeiger manipulieren einem Speicherort mit einem . So wie das hier. 14. Dynamischer Speicher & Funktionen: In dieser Sitzung werden wir über dynamisches Speichermanagement sprechen . Okay? Dies wird also auch als dynamische Speicherzuweisung bezeichnet. Was ist also im Allgemeinen das Problem mit dieser statischen Speicherzuweisung? Okay? Wenn Sie also bedenken, dass wir in der C-Sprache oft diesen statischen Speicherort verwenden. Ein Beispiel für unseren statischen oder festen Speicherort ist, nehmen wir an, Sie haben ein d von fünf und dann ein Semikolon deklariert . Das bedeutet also, dass fünf zusammenhängende Speicherplätze zugewiesen werden. Sie weisen fünf zusammenhängende Speicherplätze einfach so zu, 1.234,5. Diese Position steht nun für einen Wert von Null. Das ist also deine F1. Das ist das Aus für Drei. Und das ist hier, denn so wird es fünf zusammenhängende Speicherorte geben. Nun das Problem mit dem statischen Speicherplatz, also dieser wird als statisch betrachtet oder fest an die Art der Speicherzuweisung gebunden. Das Problem hier ist also, wenn Sie zehn Elemente speichern möchten, können Sie dies nicht speichern, da dem Speicher nur vier oder fünf zusammenhängende Elemente zugewiesen sind. Wenn Sie nur zwei Elemente verwenden, Erinnern von Speicherplätzen, also wird das Erinnern von Speicherplätzen, also fünf minus zwei, was drei Speicherorten entspricht , eindeutig verschwendet. Das Gedächtnis ist an drei Orten viszeral . Okay? Das ist also ein Problem mit statischen oder festen Speicherort. Okay? Um dies zu umgehen, haben wir in C einen dynamischen Speicherort, haben wir in C einen dynamischen Speicherort an dem Sie den Wert dynamisch angeben. Und der Speicher wird auf der Grundlage des von Ihnen angegebenen Werts zugewiesen . Okay? So nehmen Sie z. B. zur Laufzeit n Wert und es können die n zusammenhängenden Speicherplätze gemäß Ihren Anforderungen erstellt werden. Okay? Das wird also als unsere dynamische Speicherzuweisung betrachtet. Hier. In C sind verschiedene dynamische Speicherzuweisungsfunktionen verfügbar. Okay? Diese Funktionen sind also die erste, die Malloc-Funktion. Das ist also eine Malloc-Funktion. Und mit Malloc weisen wir im Allgemeinen die vom Benutzer gewünschte Größe der Weißtöne zu. Diese vielen Byte Speicher werden zugewiesen und der Zeiger zeigt auf das erste Byte des Speichers, das wir in Kürze ausführlich eingehen werden. Nixon, der andere ist der Katalog. Dies ist also eine weitere dynamische Speicherverwaltungsfunktion , mit der Speicherplatz für einen Bereich von Elementen zugewiesen wird . Und es wird auch all diese Elemente auf Null initialisieren. Und es wird den Zeiger der ersten Position zurückgeben. Okay? Dann komme ich zu Free. Dies ist nützlich, um den zugewiesenen Speicherplatz grundsätzlich freizugeben. Bisher. Möglicherweise haben Sie bereits Speicherplatz mit Malloc oder Calloc zugewiesen , aber mit Free werden Sie den Speicher freigeben, der mit Malloc Calloc zugewiesen wurde, okay, als Nächstes kommt wirklich sperren. Laut Real Lock haben Sie also immer dann, wenn der dynamisch zugewiesene Speicherplatz nicht ausreicht, Speicherplatz nicht ausreicht, die Möglichkeit, umzuziehen. Wie sehr fragst du dich. Okay? Zu diesem Zweck wird also die Relocation-Funktion nützlich sein, das ist die Realloc-Funktion. Es hilft Ihnen also im Grunde, die Größe des zuvor zugewiesenen Speicherplatzes zu ändern die Größe des zuvor zugewiesenen Speicherplatzes . Okay? Diese vier sind also die dynamischen Speicherverwaltungsfunktionen. Okay? Lassen Sie uns also ausführlich über die allererste Funktion sprechen, die Malloc-Funktion. Okay? Da diese Malloc-Funktion also den Speicherblock zuweist, weist sie diesen unabhängig von unserem Block zu , den Sie angeben, wie viele Blöcke Sie möchten. Okay, also die vielen Speicherblöcke, die es zuweisen wird. Und überlegen Sie, wie Sie das zuordnen werden und wie der Zeiger auf die erste Position zeigt. Die allgemeine Syntax des Malloc ist also PTR dem Punkttyp Stern entspricht. Sie müssen wie diesen Datentyp Stern angeben und dann nach seiner Größe abgrenzen. Das ist also die allgemeine Syntax für die Verwendung von Malloc. Okay? Lassen Sie uns nun ein Beispiel betrachten. Also hier betrachte ich eine Zeigervariable namens int star p. Jetzt ist p gleich into star. Okay? Ich trage Malloc hier auf Sternmalloc in mundgerechter Größe auf. Okay, nehmen wir an, ich schreibe wie dieses Phi-Fenster, Größe von fünf in sizeof int. Das wird also im Grunde fünf der Größe des Induktors zuweisen, wie viele Byte er als Writer zurückgibt. Die Größe der Ganzzahl beträgt also im Grunde vier Byte. Dann ist fünf von vier gleich 20. Dadurch werden also 20 Byte Speicherplatz zugewiesen. Und darauf zeigt der Zeiger p. Okay? Punkt a, b zeigen auf diesen allerersten Ort. Lassen Sie mich Ihnen zeigen, wie das gemacht wird. Okay? Zuallererst erstellt es Phi, das an Speicherorten zusammenhängend ist. Also Phi zusammenhängend an Speicherorten. Das ist also 12345, so. Okay? Und stellen Sie sich vor, der allererste Ort ist ein Ort namens Tausend, z. B. wird dies eintausendvier sein. Das ist achttausend. Okay? Das ist 1012 und das ist 101,6. Auf diese Weise werden zusammenhängende Phi-Speicherorte erstellt. Und p wird ein Zeiger sein , der die Basisadresse dieses bestimmten Adi enthält. Also ist p ein Zeiger. Und das zeigt einfach so auf die Basisadresse. Okay? Jetzt werden Sie beobachten, wie fünf zusammenhängende Speicherorte erstellt werden. Und p ist ein Zeiger, der auf die Basisadresse des gesamten Arrays zeigt. Okay? Das wird also mit Hilfe von Melaka gemacht. Angenommen, wenn kein Speicher zugewiesen ist , zeigt in diesem Fall p auf Null. Okay? Angenommen, es gibt keinen Speicherplatz für zusammenhängende Phi-Speicherorte. In diesem Fall muss es null zurückgeben. Also generell okay, wenn ich eine kleine Zahl verwende, wird sie zugewiesen. Aber nehmen wir an, Sie erhalten eine sehr große Zahl, okay? Und dieser zusammenhängende Speicherplatz, okay? Es hat also nicht so viel Speicherplatz. In diesem Fall wird Null zurückgegeben. Okay? Es geht also um Malloc. Jetzt werden wir uns schnell mit einer weiteren Funktion befassen. Um ein Programm zu schreiben, kann eine andere Funktion erforderlich sein , die eine freie Funktion ist. Okay? Also werde ich zuerst über die kostenlose Funktion sprechen. Warum? Weil Sie die Zuweisung auf den von Ihnen zugewiesenen Speicher aufheben müssen, oder? Es ist also Aufgabe des Benutzers, Speicher zu deallokieren, der mit dem Zeiger deallocate memory gefunden wird. Wenn Sie sich die allgemeine Syntax hier kostenlos ansehen. Sie können es also als frei von PDR schreiben, ohne PTR schreiben. Dadurch wird der vom Zeiger PTR zugewiesene Speicher freigegeben. Okay? Lassen Sie uns nun dasselbe Beispiel betrachten , das wir bereits betrachtet haben. Es gibt einen Integerstern p. P entspricht dem Integerstern Malloc von fünf in der Größe von int. Danach möchten Sie den zugewiesenen Speicher freigeben. Sie können das also mit Hilfe von Free Writing, free of p tun . Okay, das wird also den Speicher freigeben, der hier mit dem Zeiger p zugewiesen wird , okay? Und um diese Funktionen nutzen zu können, okay, unabhängig vom Teil der dynamischen Speicherverwaltung, müssen Sie die entsprechende Header-Datei einschließen, die malloc dot hij share ist. Okay? Sie werden also Malloc Dotted Share hinzufügen. Lassen Sie uns also erwägen, hier ein Programm zu schreiben. Also, wo Sie mit Hilfe von Malloc Speicher zuweisen werden. Okay? Sie also zuerst die Standard-Header-Datei ein, die eine stdio.h ist. Jetzt möchten Sie diese Malloc-Funktionalität verwenden. diesem Zweck also Fügen Sie zu diesem Zweck also malloc dot hij hinzu. Das ist Malloc Dotage. Jetzt benutze ich die Hauptfunktion. Okay? Zum ersten Mal einen Zeiger nehmen, weil Sie einen Zeiger benötigen, um auf die Basisadresse des Speichers zu zeigen , der der Stern-IP zugewiesen ist, DR. okay. Und n ist eine Variable und eine weitere Variable. Ich verwende KI hauptsächlich für die Flüssigkeitszufuhr. Und n steht für wie viele Elemente Sie speichern möchten. Okay? Lassen Sie uns also mit malloc Speicher basierend auf dem n-Wert zuweisen. Also können wir zuerst den Benutzer auffordern, im Grunde n Wert einzugeben , oder den Benutzer bitten, die Anzahl der Elemente einzugeben. Also, wie viele Elemente gibt es? Du musst rein. Nachdem wir also die Anzahl der Elemente eingegeben und Anweisung scanner if verwendet haben, können wir diesen Wert in eine Variable einlesen. Das ist also die prozentuale Adresse der Personentage, in denen sie aufgelöst sind. Okay? Also benutze diesen n-Wert, okay? So können wir mit Hilfe von Malloc zuordnen wo ich PDR auf die Basisadresse des Speichers zeigt . Hier ist gleich. Jetzt muss es mit Desert Pointer typecast , weil wir versuchen, alle Integer-Werte hier zu speichern, okay? Und weisen Sie mit Malloc zu, wie viele Byte Sie zuweisen. Also was nichts anderes ist als der Yen in int, size off in busy. Das wird also Speicher für E&M-Desserts zuweisen, oder? Okay. Und danach können Sie mit dem Wert n beginnen, Elemente mit Hilfe der Anweisung scan f zu speichern , das ist okay. Schauen wir uns also an, wie das gemacht werden kann. Ist, zunächst fordere ich den Benutzer auf, diese vielen Elemente einzugeben da Sie bereits einen Wert von n eingegeben haben. Du musst also eine Reihe von Elementen spielen. Ich schreibe, geben Sie die Personentage als D-Elemente ein. Dann fängt der Benutzer an, diese vielen Grenzwerte einzugeben, okay? Und sobald diese Elemente eingegeben sind, okay, dann müssen Sie anfangen, sie in dem mit Malloc zugewiesenen Speicher zu speichern . Dies kann also mit Hilfe einer Schleifenvariablen i gleich Null, kleiner als n i plus plus, plus geschehen. Okay? Mit einem Scan F-Statement können Sie speichern, oder? Das ist also ein Scanner. Der Prozentsatz sollte sein, das ist ein DR plus I plus I. Die Basisadresse wird also vom Videorekorder angezeigt, okay? Wenn der Wert I Null ist, wird Force es an dieser Stelle speichern. Dann wird es mit dem Auge inkrementiert. Das bedeutet, dass es zum nächsten Ort geht und das nächste Element speichert. So funktioniert scanf hier. Jetzt wollen wir alle Elemente anzeigen , die gerade hier gespeichert sind. Sie können also eine Print-F-Anweisung schreiben , die die Liste der Elemente enthält. Okay? Die Liste der Elemente. Okay? Mit for loop können Sie nun all diese Elemente iterieren und anzeigen , als ob I gleich Null, I weniger als n i plus plus plus ist. Beginnen Sie nun, diese Elemente mit Hilfe der fprintf-Anweisung anzuzeigen . Okay? Also, wo willst du Inhalte innerhalb des Speicherorts haben? Verwenden Sie also einen Stern, da Sie versuchen, mit Hilfe der Zeigervariable IV TR darauf zuzugreifen. Also Stern von ICTR plus I, mit dem Sie auf die Inhalte in jedem dieser Speicherorte zugreifen können , auf die IPT zeigt. Okay? Sobald der Zugriff abgeschlossen ist, müssen Sie nur noch den Speicher freigeben , der bereits mit Malloc zugewiesen wurde. Zu diesem Zweck musst du einen kostenlosen I-PTR verwenden. Wir geben Speicher frei , der mit IP zugewiesen ist , also mit Malloc. Okay? Das ist also das gesamte Programm. Okay? Mal sehen, wie dieses Programm für uns im Herbst funktionieren wird. Im Ausgabebildschirm. Allgemein. Es wird Sie bitten, zuerst die Anzahl der Elemente einzugeben, da Programmausführung beginnt, wenn die Hauptfunktion ausgeführt wird, und hier ist es, diese Anweisung direkt dort zu drucken, die in der Anzahl der Elemente enthalten ist. Nehmen wir also an, Sie haben eine Reihe von Elementen als Faser eingegeben . Okay? Was passiert dann hier? Es wird zusammenhängende Phi-Speicherorte erstellen. Okay? Also überlege es dir hier. Diese Erstellung erfolgt mithilfe von IP TR, okay? I PDR ist der Zeiger , der auf Speicher zeigt, der mit Malloc zugewiesen wurde. Okay? Hier werden wir sagen, dass N gleich fünf ist, was bedeutet, dass es ein Phi mit zusammenhängenden Orten wie diesem erzeugt . Okay? Nein. Malloc muss typisieren. Danach. Wir führen Typecasting in die Wüste durch. Standardmäßig handelt es sich um Breitzeiger, bei denen es sich um generische Zeiger handelt. Hier müssen Sie also in den entsprechenden Datentyp konvertiert eingeben, aber als IBD oder ist ein Integer-Zeiger. Okay, du musst Converted Doing Desert eingeben. Sobald die Speicher auf diese Weise für n Wert gleich fünf lokalisiert sind . Okay? Wenn Sie sich dann die nächste Anweisung hier ansehen, geben Sie den Prozentsatz der Elemente d ein, was bedeutet, dass im Ausgabebildschirm aufgefordert wird , fünf Elemente einzugeben, da der Wert n hier fünf ist. Okay? Jetzt können Sie mit der Eingabe dieser fünf Elemente beginnen. Nehmen wir an, Sie haben 1020304050 eingegeben. Diese Elemente werden eingegeben. Dann werden diese Elemente nacheinander hier gespeichert , 1020304050. Warum also? Weil mein Wert Null ist, okay? Also ich PTR plus Null wird diesen Ort repräsentieren. Okay? Also stell dir vor, das ist unser Kleid tausend. Das werden tausend, 4.008 sein. Das ist 1012, das ist 1016, okay? Wenn Sie jetzt IP TRE verwenden , zeigen sie auf die Basisadresse, okay? Jetzt zeigen wir hier die Liste der Elemente an. Okay? Schließlich wird die Liste der Eliminierungen angezeigt . Die Liste der Elemente. Was sind die Elemente , die Sie anzeigen, verwenden Sie Stern. Sie versuchen hier auf jedes einzelne Element zuzugreifen. Also werden dieselben Elemente angezeigt, wenn ich gleich Null bin. Dieses Element wird in der nächsten Iteration angezeigt , wenn i gleich eins ist, okay, I PDR wird um eine Speicherstelle erhöht. Dieses Element von 20 wird also angezeigt und so weiter, Sie können all diese Elemente anzeigen, okay? Und schließlich, kostenlos oder fünf Videorekorder, okay? Das bedeutet also, dass der mit ICTR zugewiesene Speicher im Grunde freigegeben wird. Sie werden also nicht mehr auf diese Inhalte zugreifen können. Okay? So funktioniert der Malloc und auch Free funktioniert. Okay? So können Sie also Speicher mit Malloc zuweisen und den Speicher mit Free freigeben. In der dynamischen Speicherverwaltung. 15. Malloc(): In diesem Programm zeige ich Ihnen nun, wie Sie diesen Malloc grundsätzlich verwenden , um Speicher dynamisch zuzuweisen. Also zuerst eine englische oder D-Header-Datei, okay? Und fügen Sie auch eine Malloc Dot H-Header-Datei hinzu. Okay? sich in der Hauptfunktion zunächst den Zeiger vor, Stellen Sie sich in der Hauptfunktion zunächst den Zeiger vor, der Stern I VTR heißt, okay? Und dann ist I die Loop-Variable. Dann steht n für eine Reihe von Elementen , die Sie speichern möchten. Okay? Also fordere ich den Benutzer einfach auf, die Elemente im Grunde einzugeben. Also Anzahl der Elemente. Okay? Und mit der Scanner-Anweisung können wir hier den n-Wert lesen, entweder weichmachen. Mit dieser print f-Anweisung können wir nun wie folgt auffordern, prozentuale D-Elemente einzugeben. Okay? Das ist also n Anzahl von Elementen, die Sie eingeben müssen. Okay? nun eine For-Schleife verwenden, können Sie diese Elemente wie I gleich Null, I weniger als n i plus plus lesen . Und das mit der Aussage, okay. Also, wenn du im Grunde reingehen und einlagern willst, okay. Was ist also erforderlich, ist, Speicher zuzuweisen , nicht wahr? Sobald der Benutzer also anfängt, die Anzahl der Elemente einzugeben müssen Sie Speicher zuweisen, was Malloc verwendet, das Sie hier zuweisen, IPR entspricht, okay. Ich habe also einen Wunsch in der Nähe. Und wenn der Malloc ausgeschaltet ist, teile ich die Standorte ein. Und an jedem Ort gibt es oft Dissidenten, oder? Das ist also die Größe von InDesign. Okay? Also ehrlich gesagt sind Erinnerungen jetzt lokalisiert. Wir werden hier einkaufen. Das ist also ein IP-DR plus i. Okay? So können Sie hier einkaufen. Und dann wollten wir jetzt diese Elemente anzeigen , die hier gespeichert sind. Also kann ich einfach eine Aussage ausdrucken, die besagt, dass Elemente angezeigt werden. Um Elemente anzuzeigen, benötigen Sie also wieder diesen For-Loop to I trade. Okay? Drucken Sie jedoch eine Anweisung aus , um den Inhalt anzuzeigen. Also Prozentsatz d. Okay. Okay. Um mit Stern auf die darin enthaltenen Inhalte zuzugreifen, können Sie hier I PTR plus I aufrufen. Und schließlich werden wir den Speicher freigeben, der mit IP DR zugewiesen ist Okay? Lassen Sie uns also diesen Code ausführen und das Reservierte sehen. Sie können sehen, dass Sie aufgefordert werden, die Anzahl der Elemente einzugeben. Ich gebe den Wert als fünf ein. Jetzt. Ich gebe 102-030-4050 ein. Okay? Also die gleichen Elemente, die hier angezeigt werden. Wenn du willst, dass sie in irgendeinem Format angezeigt werden, okay, dann kannst du diese Person benutzen, diese 40. Also lasst uns dieses Mal reingehen. Nur drei Elemente, okay? Diese drei Elemente sind wie 102030. Wir können hier also beobachten, wie diese drei Elemente angezeigt werden, 102030. Welchen Wert auch immer Sie angeben. Diese vielen zusammenhängend zugewiesenen Speicher werden erstellt. Mit Hilfe der dynamischen Speicherverwaltungsfunktion , die Malloc ist. Der Zeiger zeigt auf die erste Position. Okay? Also war es dieses Mal, dass ich die Anzahl der Elemente als Zehn eingebe. Nehmen wir also an, diese zehn Elemente sind so. Okay? Jetzt können Sie hier sehen, wie die Elemente 1234 bis zehn angezeigt werden. All diese Elemente werden hier angezeigt. Okay? Was passiert nun , wenn Sie zuerst versuchen, die Zuweisung aufzuheben und dann versuchen, auf den Inhalt zuzugreifen. Lassen Sie uns überlagern, dass ich die Aussage, die ich hier entferne und hier platziere, ersetze. Okay? Was dann passiert, ist dass Sie nicht auf diese Inhalte zugreifen können. Sie können es sehen, weil die Erinnerungen lokalisiert sind. Aber später hast du den Speicher freigegeben, oder? Unabhängig vom Inhalt einige Müllwerte , die an diesen Speicherorten gespeichert sind werden einige Müllwerte , die an diesen Speicherorten gespeichert sind, hier gedruckt. Okay? Weil Sie hier Speicher mit Malloc zugewiesen haben. Und speichern Sie später den Inhalt mit dem Zeiger, den Sie gespeichert haben. Und später haben Sie sofort Speicherplatz freigegeben. Jetzt versuchst du, den Inhalt anzuzeigen, okay? also in diesem Fall, Was passiert also in diesem Fall, da es bereits zugewiesen wurde? Okay? Jetzt versuchst du, an diesen Stellen einige Müllwerte anzuzeigen , sodass sie gedruckt werden. Okay? Also das Tray, das müssen Sie über den Standort Ihrer Nutzungen erledigen , ist fertig. Okay? So wie das hier. 16. Calloc(): Jetzt werden wir über Evolution sprechen. Nächste Funktion, bei der es sich um eine dynamische Speicherverwaltungsfunktion namens Katalog handelt. In dieser Katalogfunktion wird also im Allgemeinen tatsächlich zugeteilt. Genau wie Malloc. Es wird auch Speicher zuweisen. Aber hier werden wir hauptsächlich diese Speicherblöcke zuweisen. Malloc. Sie können sagen, dass Sie diese Art von Speicher verschieben. Aber im Katalog weisen Sie Speicherblöcke zu, z. B. N Anzahl von Blöcken, die Sie delegieren möchten, Sie können sie zuweisen. Es weist also Speicherblöcke zu. Okay? Lassen Sie uns nun diese Syntax betrachten. Also Kellogg, die Kellogg-Syntax kann sein, dass PTR dem Datentyp Stern entspricht. Okay? Also musst du einen Katalog schreiben. Im Allgemeinen schreiben Sie also in Malloc und meinen zwei Datentypen. Aber hier ist es die N-Kommagröße des Datentyps. Es wird zwei Argumente für die Kellogg-Funktion geben. Eins ist die Anzahl der Blöcke, gefolgt von der Größe jedes Blocks. Okay? Also hier müssen Sie die Größe des Datentyps angeben. Okay? Das ist also die allgemeine Syntax hier. Okay? Also, sobald Sie den Speicher mithilfe des Katalogs zugewiesen haben, enthält der Speicher verschiedene Speicherorte, okay? Also werden sie es automatisch auf Null initialisieren, okay? Jeder der Speicherblöcke wird mit Null gefüllt. Lassen Sie mich Ihnen hier zeigen, wie das funktionieren wird. Betrachten Sie also ein Beispiel. Wie im Stern p. Also ist p der Zeiger. Jetzt ist B gleich. Mit dem Katalog weisen wir hier also Speicher zu. Also der Star Galois, hustet. Nehmen wir an, ich schreibe zehn Kommas sizeof in Desert. Also hier wird es Speicher zuweisen, was eine dünne Speicherstelle ist, okay? Und jeder Ort oder Block entspricht nicht der Größe eines Wüstentyps. Und es füllt automatisch jeden Block, der Daten enthält, als Null aus. Okay? Lassen Sie uns das hier betrachten. B ist der Zeiger, okay? Zeigt auf die Basisadresse des Speichers, bei der es sich um eine Located handelt. Also das ist zuerst 1, s eins und so weiter, so weiter. Okay? Angenommen, Sie betrachten die Dislokation als 2000er Jahre. Und die Größe der Ganzzahl beträgt vier Byte. Okay? Du wirst es also so sehen und so weiter. Jetzt werden wir die Basisadresse dieses Speichers speichern. Und jeder Ort wird laut Katalog zunächst automatisch mit Nullen gefüllt . Der Hauptunterschied zwischen Carlo Can Malloc liegt im Katalog. Wir geben zwei Argumente weiter. Okay? Während wir im Fall von Malloc ein einzelnes Argument übergeben. Im Falle einer Jakobsmuschel weisen wir Speicherblöcke zu. Dieser Malloc, wir weisen Speicherbytes zu. So befindet sich nun der gesamte Speicher und die Unterschiede im Katalog werden an jedem dieser Standorte auf Null initialisiert. Wohingegen im Fall von Malloc. Es wird Müllwerte geben, okay? Es wird Müllwerte geben. Lassen Sie uns also ein Programm schreiben, das diese Calloc-Funktion verwendet um Speicher dynamisch zu erzeugen. Okay? Lassen Sie uns also zuerst die Header-Datei einbeziehen, die stdio.h ist, okay? Und fügen Sie auch eine Malloc Dot H-Header-Datei hinzu. Okay? Betrachten Sie nun die Hauptfunktion. Okay? In dieser Hauptfunktion verstehe ich also Ihren Standpunkt. Eine Variable, die genau wie zuvor IBD betrachtet hat, ist hier ähnlich , auch ich erwäge eine Zeigervariable Stern I PTR. Jetzt müssen wir den Benutzer auffordern , eine Reihe von Elementen einzugeben. Also hier die Anzahl der Elemente. Okay? Sobald der Benutzer also eine Reihe von Elementen eingegeben hat, anstatt scan f zu verwenden, können wir diese Anzahl von Elementen oft lesen , z. B. den DI-Pinsel für Personentage. Okay? Mit IV TR können wir jetzt Standorte zuweisen, okay? Also nennen wir es so, als ob mit Calloc n Speicherblöcke zugewiesen werden können , all in Wüstenblöcken, die ich hier verwende. Also im Sternenkatalog aus in Goma, Größe von, in der Wüste, im Koma Größe von. Okay. Jetzt müssen wir den Benutzer auffordern , diese vielen Elemente einzugeben. Okay? Das sind also zwischenmenschliche Geschmäcker, die Elemente. Okay? Sobald Sie also diese vielen Elemente eingegeben haben, müssen sie gespeichert werden, oder? Also unabhängig vom Speicher, der mithilfe des Katalogs zugewiesen wird, mit dem Sie diese Elemente speichern können. Ich gleich Null I weniger als n I plus und mit dem Scanner, okay, Sie können hier speichern, das heißt, eine Person Tage des IBT sind weniger. Okay? Sie können die Elemente also hier speichern. Jetzt. Sie können die Elemente einfach so anzeigen. Druckt f, die Liste der Elemente. Okay? Sie können also so die Liste der Elemente schreiben . Okay? Nun können Sie beobachten , dass i gleich Null ist, I weniger als, I, weniger Drücken. Okay. Lassen Sie uns nun diese Elemente mit dem Zeiger drucken , auf den wir zugreifen können. Okay? Beginne mit IPT oder plus i, okay? Sie können darauf zugreifen. Schließlich können Sie die Elemente grundsätzlich hineinlesen und die Elemente auch anzeigen. Jetzt können wir den Speicher, der sich befindet, freischalten. Schreiben Sie also auch hier ohne IP-DR, sodass alle Speicher, die sich befinden , freigegeben werden. Okay? Also, wenn Sie sich dieses Programm ansehen, okay, vergleichen Sie es mit dem Malloc-Programm. Das ist ziemlich ähnlich, außer dass diese spezielle Zeile variiert, in der Sie Speicher mithilfe des Katalogs hier zugewiesen haben. Und die Syntax für den Kellogg. Kellogge die Größe des Datentyps in Kommas ab. Okay? Das ist also die einzige Änderung. Okay? Lassen Sie uns also daran arbeiten und den Inhalt anzeigen. Was auch immer genommen wird. Nein, hier. Lass uns diesen I-Beam-Zeiger lesen , okay? Am Ende auch ich. Also hier werden wir den Benutzer zur Eingabe auffordern. Anzahl der Elemente. Anzahl der Elemente. Okay? Mit dem Scan der Aussage können wir sie jedoch lesen. Der Prozentsatz sollte also in Ordnung sein. Jetzt verwenden wir IP TR und weisen Speicher mithilfe von Calloc zu. Also hier in Star, katalogisieren Sie oft in Karma-Größe. Okay. Lassen Sie uns nun diese vielen Elemente eingeben. Wir können den Benutzer also bitten, diese vielen Elemente einzugeben, was n Anzahl von Elementen entspricht. Okay? Sobald Sie also anfangen, diese vielen Elemente mit for loop einzugeben , können Sie es lesen. I gleich Null, I weniger als n I plus plus. Mit der Scanf-Anweisung können wir den Prozentsatz d ablesen, okay? Ich habe einen Videorekorder plus i. Okay. Jetzt können wir damit beginnen , diese Elemente hier anzuzeigen. Drucke f, okay? Die Liste der Elemente, die Sie anzeigen können. Okay? also for loop für I gleich Null verwende, ich weniger als I plus plus plus. Okay? Mit dem Ausdruck einer Aussage können wir den Geschmack eines Druckers oder einer Person anzeigen. Sei. Okay. Angenommen, ich möchte beim Anzeigen einige Leerzeichen haben. Du kannst mit I PTR plus i beginnen. Okay. Schließlich können Sie den zugewiesenen Speicher mit dem Zeiger IBD wieder freigeben. Okay, mit Hilfe des von Ihnen zugewiesenen Katalogs. Okay? Lassen Sie uns also diesen Code ausführen und das Ergebnis sehen. Geben Sie die Anzahl der Elemente ein. Ich habe hier die Anzahl der Elemente als fünf eingegeben. Okay? Die Elemente sind also 102-030-4050. Okay? Sie können sehen, dass diese Elemente genau anzeigen. Was passiert, wenn ich das hier ohne IP DR. entferne und hier verwende. Okay? Also lass uns das machen und uns das Reservat ansehen. Fünf Elemente und 2030, 40, 50. Okay? Nochmals, Sie können hier sehen, dass Sie die Speicherzuweisung aufheben, okay? Nachdem Sie also den Speicher freigegeben haben, versuchen Sie , auf die Geschwindigkeit zuzugreifen, das ist ein Problem. Okay? In diesem Fall erhalten Sie also einige Garbage-Werte. Okay? Deshalb sollten Sie diesen IBD-freien Dienst nach der Speicherzuweisung immer nutzen . Das heißt, nachdem Sie auf alle Elemente zugegriffen und dann mit der Deallokation des Speichers begonnen haben. Eine weitere Sache ist, dass Sie diese Zeilen nicht verwenden werden, um Elemente einzugeben, okay? Und diese Elemente in diesem Speicher zu speichern. Was wird in diesem Fall die Reserve sein? Okay? Nehmen wir also an, ich habe die Werte fünf eingegeben. Und Sie können sehen, dass die Liste der Elemente Nullen, Nullen und Nullen 00 ist. Warum? Denn laut Katalog werden, sobald die Speicher gefunden sind , sobald die Speicher gefunden sind , standardmäßig alle Nullen an diesen Speicherorten ersetzt . Deshalb erhalten Sie Standardwerte als Nullen. Okay? So funktioniert der Katalog also. 17. Realloc(): Das nächste ist also Real Lock. Okay? rechtlichen Gründen werden wir den Speicher also verschieben, wenn der aktuell zugewiesene Speicher nicht ausreicht. Dem Wasser kann also eine kleine Speicherzuweisung mit Malloc oder Calloc vorgenommen werden. Sie werden später mit der Speicherzuweisung beginnen. Du willst den Speicher erweitern, okay? Sie können also anfangen, echtes OK zu verwenden. Okay, mit dem Protokoll können Sie Speicher neu zuweisen. Allgemeine Syntax dafür. Echte Sperre wird sein, du kannst so schreiben, dass dieser neue PDR dem Datentyp Stern entspricht . Echtes Sperren des Datentyps Stern, ja, Sperrt alle PDR-Kommas, neue Größe oder die allgemeine PDR-Größe. Okay? Das ist also eine echte Lock-entsprechende Syntax. Also, was ist hier mit altem PTR gemeint? Okay? Also hier kann ich schreiben wo der alte PTR tatsächlich den Zeiger darstellt , der auf den Speicherblock zeigt, der bereits mit Malloc zugewiesen wurde, oder Calloc, wie sie horizontal gesagt haben, etwas Speicher zuweisen wird. Mit Malloc oder Calloc Write. Dieser Weltzeiger steht eigentlich für den Zeiger , der auf den alten Speicher zeigt. Zur Erinnerung. Und dieser Speicher wird mit Malloc oder Calloc zugewiesen. Okay? Das repräsentiert also diese mündliche Erinnerung. Nun, was ist Neue Sonne? neue Größe steht also für die aktualisierte Größe, die Sie mit Real Locker zuweisen möchten. Also kann ich hier als Größe des neuen Blocks schreiben, okay? Oder Größe des Blocks , der verschoben werden soll. Also auch hier, sobald Sie den Speicher, einen neuen Punkt, verschoben haben, wird nicht mehr mit echtem OK auf diesen neu zugewiesenen Speicher verwiesen . Lassen Sie mich Ihnen hier ein Beispiel zeigen. also ein Beispiel vor, in dem Sie real aka zum ersten Mal berücksichtigen , dass ein Zeiger hier im Stern b enttäuscht ist. Jetzt weise ich Speicher zu, Malloc für diesen Induktorzeiger verwende. Das ist also im Star Malloc aus. Wir können z. B. I schreiben . Möchte n Speicherplätze zuweisen. Also zehn in die Größe aus zehn in die Größe von int. Okay? Es werden also zehn Standorte zugewiesen , von denen jeder die Größe einer Ganzzahl hat. Jetzt können wir mit gelbem Ocker zuweisen. Also, wenn bereits zugewiesener Speicher nicht ausreicht. Okay? Sie werden also mit Real Lock lokalisieren. Nehmen wir an, ich möchte 20 Standorte, neue Größen, 20, z. B. damit ich in diesem Fall in den Stern schreiben kann, dass sie wirklich gesperrt sind. Also, was ist der Weltzeiger hier Ich verwende das Wort Zeiger, einen neuen Zeiger, beide nur als dasselbe P. Also alter Zeiger, übliche neue Größe. Im Moment ordne ich neue Größen zu. Es befinden sich 2010 Standorte oder zehn Blocks. Jetzt sind es 20 Blocks. Wir ziehen um. Der Weltzeiger und der neue Zeiger sind beide identisch, was bedeutet, dass der neue Zeiger derselbe Punkt ist, an dem p auf den neu zugewiesenen Speicher zeigt. Okay? Vorhin können Sie hier also sehen, dass es zehn Speicherblöcke gibt. Zehn von vier entspricht 40 Byte Speicher, die zugewiesen sind. Aber damit wird es 2020 in vier Teile gehen, was bedeutet, dass 80 Byte Speicher zugewiesen werden. Für beide verwenden wir denselben Zeiger zum Zeigen. P zeigt jetzt auf den aktualisierten Speicher , der 80 Byte Speicher umfasst. Okay? Lassen Sie uns nun ein Beispiel betrachten. Wirklich aka. Okay, zuerst werde ich im Grunde erwägen, einen Zeichenzeiger zuzuweisen. Lassen Sie mich direkt implementieren. Okay? Also verwende ich hier einen Zeichenzeiger. Ich benutze es Character Pointer. Also wo ich es als Autosternnamen schreiben kann, z. B. okay, Sternname. Das ist also mein Zeichenzeiger der den Begriff Speicher zuweisen verwendet. Der Name ist also gleichbedeutend mit, okay. Also starte Malloc aus. Okay. Nehmen wir an, ich weise zehn zusammenhängende Stellen zu und jede hat den Datentyp Charakter, aber was bedeutet, dass Größe von Karies, ein Byte, zehn in eins sind zehn Byte Speicher, die ich mit Malloc zuweise. Okay? Also möchte ich jetzt einige Inhalte hineinkopieren. Sie können STR CPI zum Kopieren verwenden. hinzufügen Zu diesem Zweck müssen Sie jedoch ein weiteres hohes Profil , nämlich eine String-Punkt-H-Header-Datei. Header-Datei mit Zeichenfolge und Punkt. Okay? Sobald ich das aufgenommen habe, es uns jetzt frei, diesen STR zu verwenden, um BY zu sehen. Okay. Also schreibe ich über das Platzieren einer Zeichenfolge namens Hyderabad. Okay. Nachdem wir das kopiert haben, versuchen wir nun, den Namen zu drucken, sich an dieser bestimmten Adresse befindet. Okay, nehmen wir an, ich werde versuchen, sie zu drucken. Der Name, den ich speichere , der ist ein Hydrobag, und der ist an der Adresse gespeichert. Okay. Die Iris ist also prozentual p, okay ? Also können wir es als Namen, Kommenamen schreiben. Sie können also annehmen, dass ein Name beim ersten Mal im exakten Zeichenkettenformat gedruckt wird , okay? Aber beim zweiten Mal wird derselbe Name angezeigt, aber der Prozentsatz des SBus-Benutzers, also die Adresse, wird angezeigt. Okay? Nun, das ist Malloc, das wir zugewiesen haben. Nehmen wir an, ich möchte eine größere Zeichenfolge speichern. Okay? In diesem Fall ist dies also kein ausreichender Writer, also verwende ich Free Lock. Nehmen wir Stern an. Okay. Also verwende ich Realloc und allocate hier. Nehmen wir etwa 15 Zeichen an und versuchen, sie zu speichern. Das ist also ein Zeichengrößentyp. Okay? Also hier auch Semikolon, hier auch Semikolon. Okay? Jetzt versuche ich, eine andere Zeichenfolge zu kopieren. Okay? Nehmen wir an, das Namenskomma. Also müssen wir dann nur eine größere Saite nehmen. Okay? Also ziehe ich dafür eine Schnur wie Mini aus. Okay? Die Anzahl der Zeichen ist also größer als die Anzahl der Zeichen in Hyderabad. Lassen Sie uns nun auch hier ähnlich drucken. Im Moment versuche ich auch, den Namen und die entsprechende Adresse zusammen mit dem Namen anzuzeigen. Okay? Sobald Ihre Benutzer fertig sind, können Sie einfach den hier zugewiesenen Speicher freigeben. Also frei von Namen, mit dem Sie Speicher freigeben können , der sich hier befindet. Lassen Sie uns diesen Code ausführen und reserviert sehen. Okay, also habe ich versucht, es hier zu benutzen, okay. Wir drucken also bereits nur in einer anderen Zeile. Okay? Also genau hier ein Slashing und hier auch ein Slashing. Jetzt siehst du, der Name ist Hydro Bot, ist nicht unser Kleid. Okay. Sie können die entsprechende dafür zugewiesene Adresse beachten . Jetzt heißt der Name Minneapolis, und normalerweise sind es Windeln an dieser bestimmten Adresse. Okay.