Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointersErste Schritte mit Zeigern


Bemerkungen

Dieser Abschnitt bietet einen Überblick über die Zeiger und warum ein Entwickler sie verwenden möchte.

Es sollte auch große Themen innerhalb von Zeigern erwähnen und mit den verwandten Themen verknüpfen. Da die Dokumentation für Zeiger neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Erste Schritte mit Zeigern

Zeiger sind Variablen, die die Adresse einer anderen Variablen speichern. Als Sprachfeature stehen sie in verschiedenen Programmiersprachen zur Verfügung, wie zum Beispiel:

  • Gehen
  • C / C ++
  • Ada
  • Pascal
  • C # (unter bestimmten Bedingungen verfügbar)
  • COBOL
  • Fortran

Führen Sie die folgenden Schritte aus, um mit C / C ++ - Zeigern zu beginnen

  1. Installieren Sie einen Compiler wie Minimalistic GNU für Windows, http://www.mingw.org/wiki/Getting_Started

  2. Wechseln Sie über die Befehlszeile in den Installationsordner von g ++ binary, zum Beispiel:

    C:\MinGW\bin>
     

3.Erstellen Sie eine Textdatei und schreiben Sie dieses C ++ - Programm

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. Speichern als pointer.cpp 5. Führen Sie an der Eingabeaufforderung den Befehl aus

g ++ -o pointer.exe -c pointer.cpp

  1. Im Arbeitsverzeichnis erhalten Sie eine ausführbare Datei als pointer.exe, die beim Ausführen des Programms ausführt

Die Adresse der angezeigten Variablen lautet: 0x7e892dac0a0c

Wenn Sie die obige Ausgabe erhalten, haben Sie Ihr erstes Zeigerprogramm geschrieben

Was ist ein Zeiger?

Es ist im Grunde die Adresse einer Variablen im Speicher. Dadurch können wir indirekt auf eine Variable zugreifen. Mit Zeigern können wir also über die Adresse einer Variablen sprechen (sowie über den Wert, indem der Zeiger dereferenziert wird). Sie sind nützlich, wenn wir uns mit der Adresse eines Speicherorts und nicht mit seinem Wert befassen wollen.

Betrachten Sie die folgende einfache Swap-Funktion in C:

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

jetzt in main wenn wir den folgenden Code haben:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

Die Werte von a und b bleiben unverändert, wie durch das Ausdrucken ihrer Werte in der Hauptfunktion klar wäre. Um die Swap-Funktion korrekt zu implementieren, übergeben wir die Adresse der Variablen a und b, anstatt die Werte der Variablen a und b übergeben:

swap(&a,&b);
 

Der Operator & gibt die Adresse der Variablen zurück. Es wird wie folgt verwendet:

int *address_of_a = &a;
 

int *address_of_a gibt an, dass die Variable address_of_a auf eine Integer-Variable zeigt (speichert die Adresse von).

Nun wäre unsere korrekte Swap-Funktion:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

Jetzt würden sich die ausgetauschten Werte in der Hauptfunktion widerspiegeln:

int a = 9,b = 100;
swap(&a,&b);
//print
 

Sie können den Zeiger immer mit * dereferenzieren, wenn Sie nicht über die ursprüngliche Variable verfügen. Angenommen, Sie haben in einer Funktion nicht die ursprüngliche Variable, sondern die Adresse in einer Zeigervariablen int *x . Wir können einfach auf den Wert der Speicheradresse als value = *x zugreifen;

Wenn wir keine Zeiger hätten, könnten wir niemals Pass durch Referenz in C emulieren, da C Wert ist . int *firstaddress, int *secondaddress daran, dass wir nur emulieren können , denn selbst wenn wir Zeiger verwenden, sind int *firstaddress, int *secondaddress nur lokale Zeigervariablen, die die Adresse der Variablen a und b .