Du bist hier: Startseite > Entwicklung (C/C++) > C++ Grundlagen > Pointer (Zeiger)

Pointer (Zeiger)

Ein Pointer (Zeiger) ist ein Verweis auf eine Speicherzelle, der es ermöglicht, etwas direkt im Speicher zu verändern.
Manchmal ist es sinnvoll, denn Parameter(n) einer Funktion Pointer(n) zu übergeben.

Datei:  Quelldateien/main.cpp
  1. #include <iostream> // std::cout, std::endl, std::cin
  2. #include <stdlib.h> // EXIT_SUCCESS
  3.  
  4. int main(void)
  5. {
  6. int Punkte = 10; // Integer Variable deklarieren und mit 10 definieren
  7. std::cout << "Punkte: " << Punkte << std::endl; // Punkte ausgeben
  8. std::cout << "Speicheradresse: " << &Punkte << std::endl; // Adresse zeigen (das & Zeichen!!!)
  9. int *pPunkte = &Punkte; // pointer deklarieren und mit Punkte definieren (& Zeichen beachten)
  10. *pPunkte += 10; // Mit dem Pointer +10 rechnen
  11. std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl; // Punkte erneut ausgeben
  12. pPunkte = NULL; // Pointer leeren
  13. delete pPunkte; // pointer aus dem Speicher löschen
  14.  
  15. std::cin.get();
  16. return EXIT_SUCCESS;
  17. }

Das oben gezeigte Beispiel ist Äquivalent zu

Datei:  Quelldateien/main.cpp
  1. #include <iostream> // std::cout, std::endl, std::cin
  2. #include <stdlib.h> // EXIT_SUCCESS
  3.  
  4. int Bonuspunkte(int p)
  5. {
  6. return p += 10;
  7. }
  8. int main(void)
  9. {
  10. int Punkte = 10; // Integer Variable deklarieren und mit 10 definieren
  11. std::cout << "Punkte: " << Punkte << std::endl; // Punkte ausgeben
  12. Punkte = Bonuspunkte(Punkte); // Funktion aufrufen und mit Rückgabe die Variable neu befüllen
  13. std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl; // Punkte erneut ausgeben
  14.  
  15. std::cin.get();
  16. return EXIT_SUCCESS;
  17. }

oder

Datei:  Quelldateien/main.cpp
  1. #include <iostream> // std::cout, std::endl, std::cin
  2. #include <stdlib.h> // EXIT_SUCCESS
  3.  
  4. void Bonuspunkte(int *p)
  5. {
  6. *p += 10;
  7. }
  8. int main()
  9. {
  10. int Punkte = 10;
  11. int *pPunkte = &Punkte;
  12. std::cout << "Punkte: " << Punkte << std::endl;
  13. std::cout << "Speicheradresse: " << &Punkte << std::endl;
  14. Bonuspunkte(pPunkte); // pointer übergeben / *pPunkte würde denn Wert 10 übergeben
  15. std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl;
  16. pPunkte = NULL; // Pointer leeren
  17. delete pPunkte; // pointer aus dem Speicher löschen
  18.  
  19. std::cin.get();
  20. return EXIT_SUCCESS;
  21. }

Bei Verwendung von Pointern sollte immer darauf geachtet werden, dass sie wieder gelöscht werden.

Kommentare zu diesem Beitrag

Sie müssen angemeldet sein, um eine Nachricht zu erstellen. Anmelden »