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.