In dieser Lektion werden Zeiger in C++ behandelt. Ziel ist, die direkte Adressierung von Speicher, Pointer-Arithmetik und Referenzen zu verstehen.
int a = 10;
int* p = &a; // p speichert die Adresse von a
std::cout << "Adresse von a: " << p << std::endl;
std::cout << "Wert von a über p: " << *p << std::endl;
* deklariert.
Das Ampersand & liefert die Adresse einer Variable.
int* p; – Zeiger auf intdouble* d; – Zeiger auf doublechar* c; – Zeiger auf char*p kann auf den Wert der Variablen zugegriffen werden, auf die der Zeiger zeigt.
int a = 5;
int* ptr = &a;
std::cout << *ptr << std::endl; // Ausgabe: 5
*ptr = 20;
std::cout << a << std::endl; // Ausgabe: 20
int arr[3] = {10, 20, 30};
int* p = arr;
std::cout << *p << std::endl; // 10
p++;
std::cout << *p << std::endl; // 20
p++;
std::cout << *p << std::endl; // 30
nullptr sein.
int* p = nullptr;
if (p != nullptr) {
std::cout << *p << std::endl;
} else {
std::cout << "Zeiger zeigt auf nichts!" << std::endl;
}
int a = 5;
int* p = &a;
int** pp = &p;
std::cout << **pp << std::endl; // Ausgabe: 5
int arr[3] = {1,2,3};
int* p = arr; // arr <=> &arr[0]
for(int i=0;i<3;i++)
std::cout << *(p+i) << " ";
std::cout << std::endl;
& deklariert.
Anders als Zeiger kann eine Referenz nicht null sein und muss bei Deklaration initialisiert werden.
int a = 10;
int& ref = a;
ref = 20;
std::cout << a << std::endl; // Ausgabe: 20
*, Adresse mit &std::string und moderne Container reduzieren oft die Notwendigkeit von rohen Zeigern