C ++ Zeigerarithmetik

C ++ Zeigerarithmetik

Wir wissen, dass die Zeiger Speicheradressen von Variablen sind und im Allgemeinen numerisch sind. Deshalb können wir auch einige arithmetische Berechnungen für die Zeiger durchführen. Diese Berechnungen können genauso wie bei numerischen Werten in Mathematik oder Programmierung durchgeführt werden. Daher diskutieren wir einige arithmetische Operationen auf den Zeigern in unserem Tutorial -Leitfaden mit C++. Wir haben die Ubuntu 20 benutzt.04 System sorgt dafür, dass der G ++ - Compiler darin konfiguriert ist. Beginnen wir mit der Implementierung der Zeigerarithmetik im Ubuntu 20.04 Systemanschlussschale mit Hilfe einer Verknüpfung Strg+Alt+T, die auf seinem Desktop verwendet wird.

Beispiel 1:

Beginnen Sie das erste Beispiel für C ++ - Code, um die arithmetischen Operatoren „+“ für Zeiger durch Dateierstellung zu verwenden. Sie können eine Datei auf viele Arten erstellen, aber die einfachste ist die Verwendung der Anweisung „Touch“. So haben wir das Touch -Keyword zusammen mit dem Titel einer Datei ausprobiert, die auf der Konsole gebildet und eingegeben werden soll. Die Datei wird im Ubuntu 20 erstellt.04 Home Ordner.

Um diese neu erstellte Datei zu öffnen, können Sie einen der integrierten Editoren verwenden, die mit Ubuntu 20 geliefert werden.04 i.e. VIM, Texteditor oder GNU Nano Editor. Wir schlagen vor, dass Sie den GNU -Nano -Editor verwenden, wie wir ihn in der Shell verwendet haben, wie aus dem Bild unten gezeigt.

Diese Datei “Zeiger.CC ”ist bisher im Herausgeber nicht ausgelöst. Wir haben die Stream-Header-Datei Eingabe-Output-Stream in die erste Zeile aufgenommen und der Standard-Namespace wurde in der zweiten Zeile verwendet. Wir haben eine Ganzzahlvariable „V“ mit einem Wert von 8 initialisiert. Zu der nächsten in Folge haben wir einen Zeiger vom Typ Ganzzahl initialisiert "P" initialisiert. Dieser Zeiger ist die Adresse einer Variablen „V“, da er anhand des „&“ -Scheichens „&“ durch die Variable V “gebunden ist. Dies bedeutet, dass wir die Adresse eines Veränderbaren jederzeit ändern können. Die Standard -Cout -Anweisungen wurden nacheinander verwendet. Der erste zeigt die ursprüngliche Adresse von Variablen „V“ an, die als Zeiger „P“ gespeichert wurde.

In der nächsten Zeile hat die Cout -Anweisung die Adresse des Zeigers um 1 erhöht und angezeigt. Die nächsten beiden Zeilen haben den Zeiger verwendet und seinen Wert um 2 und 3 erhöht. Die inkrementierten Werte wurden mit der Cout -Anweisung angezeigt. Der Code endet hier. Sparen wir zuerst den Code vor der Ausführung. Verwenden Sie zu diesem Zweck Strg+s. Sie müssen den Gnu Nano -Redakteur verlassen, um zum Terminal zurückzukehren. Nutzen Sie den Tiefpunkt „Strg+x“ für diesen Zweck. Dies war der einfachste C ++ - Code, der den Zeiger mit dem+ Operator erhöht hat.

Nachdem wir zur Shell zurückgekehrt sind, müssen wir unseren Code fehlerfrei machen. Der C ++ - Compiler wird für diese Ausdauer verwendet. Das Schlüsselwort "G ++" des Compiler wurde zusammen mit dem Namen einer zu kompilierten Datei verwendet. I.e. "Zeiger.CC ”. Die Zusammenstellung ist erfolgreich, da Sie sehen können, dass sie nichts zurückgibt. Führen Sie unseren fehlerfreien Code mit dem aus./A.out “Standardbefehl. Wir haben die 4 verschiedenen Adressen für Variable "V".

Die erste ist die ursprüngliche Adresse "P" der Variablen "V". Der zweite wird um 1 erhöht, der dritte wird durch Wert 2 erhöht und der letzte wird durch 3 erhöht. Jedes Mal führen wir das Inkrement aus, die letzten beiden Zeichen einer Adresse ändert sich dazu, sich wie darunter gezeigt zu ändern.

Beispiel 2:

Lassen Sie uns ein anderes Beispiel für den Dekrementbetreiber auf einem Zeiger verwenden. Wir haben also dieselbe alte Datei „Zeiger konsumiert.CC ”. Der Namespace- und Eingangs-Output-Header wird genauso verwendet wie zuvor. Eine andere konstante Ganzzahlvariable „S“ wird mit einem konstanten Wert von 5 initialisiert. Innerhalb der Main () -Methode haben wir ein Ganzzahl -Array mit dem Namen "V" der Größe "S" mit 5 Elementen verwendet. Der Ganzzahlzeiger „P“ wurde erklärt. Der Zeiger wurde mit dem Integer -Array "V" mit dem "&" -Schild gebunden.

Die Größe wird von der S-1-Adresse gestartet. Die „für“ -Schloop wurde initialisiert, die von Größe 5 gestartet wird und in der abnehmenden Reihenfolge durch Dekrementierung jedes Mal um 1 funktioniert. Jedes Mal, wenn die „für“ -Schloop funktioniert, wird die Speicheradresse der von der Schleife iterierten Indexnummer und den Wert bei einem bestimmten Index sowie die Standard -Cout -Anweisung angezeigt. Das „P“ demonstriert die Indexadresse, während das *p den Wert an diesem bestimmten Index darstellt. In jeder Iteration wurde der Zeiger durch 1 abgeschlossen. Die Schleife endet hier und auch die Hauptfunktion.

Kompilieren Sie den Code zuerst mit dem G ++ - Compiler der C ++ - Sprache. Es läuft erfolgreich ohne Fehler. Die Ausführung wird von der "durchgeführt"./A.OUT ”Befehl. Wir haben die Ausgabe wie unten gezeigt. Sie können sehen, wir haben jede Speicheradresse für einen bestimmten Index I.e. 5,4,3,2,1 in der abnehmenden Reihenfolge der Indizes. Andererseits haben wir die Werte auch bei jedem bestimmten Index jedes Mal, wenn der Schleifen in der abnehmenden Reihenfolge bis zum letzten Wert iteriert.

Beispiel 3:

Lassen Sie uns eine neue Instanz von Zeigern haben. In diesem Beispiel werden wir Zeigeradressen sowie die von ihnen enthaltenen Werte vergleichen. Somit der Dokumentzeiger.CC wird jetzt im GNU Nano Editor eingeführt. Die Funktion main () wurde nach dem Standard -Namespace und dem Stream -Header in der Code -Datei initialisiert. Es enthält zwei String -Typ -Variablen S1 und S2 mit vollständig unterschiedlichen Zeichenfolgenwerten i.e. "Aqsa" und "Yasin".

Danach haben wir zwei Zeigervariablen P1 und P2 initialisiert, die beide Variablen S1 und S2 unter Verwendung des „&“ -Cels „=“ = = = = = = = = "=" sind, initialisiert. Dies bedeutet, dass der Zeiger P1 die Adresse von Variablen S1 und P2 die Adresse der Variablen S2 ist.

Die erste Standard -COUT -Klausel wird verwendet, um das Vergleichsergebnis beider Hinweise zu zeigen i.e. Adressen beider Stringvariablen. Wenn die Adressen gleich sind, wird 1 ansonsten ansonsten als falsch auf der Shell angezeigt. Die zweite Standard -Cout -Klausel wird verwendet, um das Vergleichsergebnis von Werten anzuzeigen, die in der spezifischen Zeigeradresse gespeichert sind. Wenn die Werte gleich sind, gibt es 1 zurück, ansonsten 0. Das Vergleichsprogramm endet hier.

Kompilieren Sie zuerst Ihren C ++ - Code und führen Sie ihn aus. Wir haben 0 als Ergebnis beider Vergleiche i.e. FALSCH. Dies bedeutet, dass sowohl Zeigeradressen als auch Werte an diesen Adressen nicht gleich sind.

Lassen Sie uns den Code ein wenig ändern. Öffnen Sie dieselbe Datei und aktualisieren Sie die Zeichenfolgewerte. Dieselben Zeichenfolgevariablen S1 und S2 wurden mit den gleichen Werten i initialisiert i.e. Aqsa. Der Rest des Codes wird unverändert wie zuvor. Speichern Sie Ihren Code, um das aktualisierte Ergebnis zu erhalten.

Wir haben 0 als Vergleichsergebnis von Zeigeradressen, da beide Variablen unterschiedliche Speicheradressen enthalten und 1 als Ergebnis des Wertvergleichs i.e. Gleiche Werte beider Saiten.

Abschluss:

Wir haben die arithmetischen Operationen diskutiert, die an den Zeigern durchgeführt wurden. Wir haben die Inkrement- und Verringungs arithmetischen Operatoren für Zeiger verwendet. Wir haben auch die Bonusbeispiele besprochen, um die Arbeit des Vergleichsbetreibers auf zwei verschiedenen Zeigern zu veranschaulichen.