Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Zeiger verstehen: Ein praktischer Leitfaden

C++ Zeiger

Dieses Tutorial erklärt C++ Zeiger, ihre Funktionsweise und praktische Beispiele, um Ihnen zu helfen, dieses wesentliche Sprachfeature zu meistern.

In C++ ist ein Zeiger eine Variable, die die Speicheradresse einer anderen Variable speichert. Zeiger ermöglichen direkte Speichermanipulation, dynamische Allokation und effiziente Datenverarbeitung.

Adressen in C++

Bei einer Variablen var gibt der Ausdruck &var ihre Adresse im Speicher zurück. Zum Beispiel:

Beispiel 1: Variablenadressen in C++ ausgeben

#include <iostream> using namespace std; int main() { // Variablen deklarieren int var1 = 3; int var2 = 24; int var3 = 17; // Adresse von var1 ausgeben cout << "Adresse von var1: " << &var1 << endl; // Adresse von var2 ausgeben cout << "Adresse von var2: " << &var2 << endl; // Adresse von var3 ausgeben cout << "Adresse von var3: " << &var3 << endl; }

Ausgabe

Adresse von var1: 0x7fff5fbff8ac Adresse von var2: 0x7fff5fbff8a8 Adresse von var3: 0x7fff5fbff8a4

Adressen werden im hexadezimalen Format angezeigt. Der Unterschied von 4 Bytes zwischen aufeinanderfolgenden Adressen spiegelt die 4-Byte-Größe eines int auf einem 64-Bit-System wider.

Hinweis: Die genauen Adressen können bei jedem Programmlauf variieren.


C++ Zeiger

Wie gezeigt, speichern Zeiger Adressen statt direkter Werte. Die Deklaration eines Zeigers ist unkompliziert:

int *pointVar;

Hier ist pointVar ein Zeiger auf einen int. Die bevorzugte Syntax platziert den Sternchen neben dem Typ:

int* pointVar; // bevorzugte Syntax

Mehrere Deklarationen sind ebenfalls möglich:

int* pointVar, p;

In dieser Zeile ist pointVar ein Zeiger, während p ein regulärer int ist. Das Sternchen wird mit dem Variablennamen assoziiert, nicht mit dem Typ.

Tipp: Der *-Operator wird zur Deklaration von Zeigern verwendet, nicht zur Multiplikation.


Adressen Zeigern zuweisen

Um einen Zeiger an die Adresse einer Variable zu binden, verwenden Sie den Adressoperator &:

int* pointVar, var; var = 5; // Adresse von var dem pointVar-Zeiger zuweisen pointVar = &var;

Nun hält pointVar die Speicheradresse von var.


Wert aus der Adresse über Zeiger erhalten

Der Dereferenzierungsoperator * ruft den Wert ab, der an der Adresse gespeichert ist, die ein Zeiger hält:

int* pointVar, var; var = 5; pointVar = &var; cout << *pointVar << endl; // Ausgabe: 5

Hier liefert *pointVar den Wert von var (5). Der Operator heißt Dereferenzierungsoperator.

Hinweis: In C++ sind pointVar (der Zeiger) und *pointVar (der Wert, auf den er zeigt) unterschiedliche Entitäten.


Beispiel 2: Funktionsweise von C++ Zeigern

#include <iostream> using namespace std; int main() { int var = 5; // Zeigervariable deklarieren int* pointVar; // Adresse von var speichern pointVar = &var; // Wert von var ausgeben cout << "var = " << var << endl; // Adresse von var ausgeben cout << "Adresse von var (&var) = " << &var << endl << endl; // Zeiger pointVar ausgeben cout << "pointVar = " << pointVar << endl; // Inhalt der Adresse ausgeben, auf die pointVar zeigt cout << "Inhalt der Adresse, auf die pointVar zeigt (*pointVar) = " << *pointVar << endl; return 0; }

Ausgabe

var = 5 Adresse von var (&var) = 0x61ff08 pointVar = 0x61ff08 Inhalt der Adresse, auf die pointVar zeigt (*pointVar) = 5

Wert ändern, auf den Zeiger zeigen

Wenn pointVar auf var zeigt, ändert die Modifikation von *pointVar die ursprüngliche Variable:

int var = 5; int* pointVar; pointVar = &var; *pointVar = 1; cout << var << endl; // Ausgabe: 1

Sowohl pointVar als auch &var halten die gleiche Adresse; die Änderung des dereferenzierten Werts aktualisiert var.


Beispiel 3: Wert ändern, auf den Zeiger zeigen

#include <iostream> using namespace std; int main() { int var = 5; int* pointVar; // Adresse von var speichern pointVar = &var; // var ausgeben cout << "var = " << var << endl; // *pointVar ausgeben cout << "*pointVar = " << *pointVar << endl << endl; cout << "Wert von var auf 7 ändern:" << endl; // Wert von var auf 7 ändern var = 7; // var ausgeben cout << "var = " << var << endl; // *pointVar ausgeben cout << "*pointVar = " << *pointVar << endl << endl; cout << "Wert von *pointVar auf 16 ändern:" << endl; // Wert von var auf 16 ändern *pointVar = 16; // var ausgeben cout << "var = " << var << endl; // *pointVar ausgeben cout << "*pointVar = " << *pointVar << endl; return 0; }

Ausgabe

var = 5 *pointVar = 5 Wert von var auf 7 ändern: var = 7 *pointVar = 7 Wert von *pointVar auf 16 ändern: var = 16 *pointVar = 16

Häufige Fehler bei der Arbeit mit Zeigern

Nachfolgend sind typische Fehler und die korrekte Handhabung von Zeigern aufgeführt:

int var, *varPoint; // Falsch! varPoint ist eine Adresse aber var nicht varPoint = var; // Falsch! // &var ist eine Adresse // *varPoint ist der Wert, der in &var gespeichert ist *varPoint = &var; // Richtig! // varPoint ist eine Adresse und so ist &var varPoint = &var; // Richtig! // sowohl *varPoint als auch var sind Werte *varPoint = var;

Empfohlene Weiterführende Themen:

C++ Zeiger verstehen: Ein praktischer Leitfaden

C Sprache

  1. C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
  2. C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
  3. C++-Kommentare: Best Practices für lesbaren, wartbaren Code
  4. C++ Klassentemplates meistern: Ein praktischer Leitfaden
  5. C-Zeiger meistern: Praxisnahes Experten-Tutorial
  6. C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
  7. C-Zeiger meistern: Praktische Schritte zur fortgeschrittenen Programmierung
  8. C++ Programmiersprache: Überblick & Kernfeatures
  9. C++ Konstanten & Literale: Typen, Syntax & Best Practices
  10. C++ Operatoren: Typen, Nutzung & Best Practices