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- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int main(void)
- {
- int Punkte = 10; // Integer Variable deklarieren und mit 10 definieren
- std::cout << "Punkte: " << Punkte << std::endl; // Punkte ausgeben
- std::cout << "Speicheradresse: " << &Punkte << std::endl; // Adresse zeigen (das & Zeichen!!!)
- int *pPunkte = &Punkte; // pointer deklarieren und mit Punkte definieren (& Zeichen beachten)
- *pPunkte += 10; // Mit dem Pointer +10 rechnen
- std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl; // Punkte erneut ausgeben
- pPunkte = NULL; // Pointer leeren
- delete pPunkte; // pointer aus dem Speicher löschen
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
Das oben gezeigte Beispiel ist Äquivalent zu
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int Bonuspunkte(int p)
- {
- return p += 10;
- }
- int main(void)
- {
- int Punkte = 10; // Integer Variable deklarieren und mit 10 definieren
- std::cout << "Punkte: " << Punkte << std::endl; // Punkte ausgeben
- Punkte = Bonuspunkte(Punkte); // Funktion aufrufen und mit Rückgabe die Variable neu befüllen
- std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl; // Punkte erneut ausgeben
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
oder
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- void Bonuspunkte(int *p)
- {
- *p += 10;
- }
- int main()
- {
- int Punkte = 10;
- int *pPunkte = &Punkte;
- std::cout << "Punkte: " << Punkte << std::endl;
- std::cout << "Speicheradresse: " << &Punkte << std::endl;
- Bonuspunkte(pPunkte); // pointer übergeben / *pPunkte würde denn Wert 10 übergeben
- std::cout << "Punkte + Bonuspunkte: " << Punkte << std::endl;
- pPunkte = NULL; // Pointer leeren
- delete pPunkte; // pointer aus dem Speicher löschen
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
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 »