Programmier-Befehle - Woche 11 PDF
Document Details
Uploaded by FervidDune
ETH Zurich
Tags
Summary
This document is a set of programming notes, specifically covering the topic of pointers in C++. It provides definitions, explanations, and examples of pointer usage, aimed at an undergraduate-level computer science course. It emphasizes important pointer commands and how they affect memory addressing.
Full Transcript
Programmier-Befehle - Woche 11 Zeiger Zeiger (generell) Adresse eines Objekts im Speicher Wichtige Befehle: Definition: int* ptr = address of type int; (ohne Startwert: int* ptr = nullptr;) Zugriff auf Zeiger: ptr = otr ptr // Pointer gets new target...
Programmier-Befehle - Woche 11 Zeiger Zeiger (generell) Adresse eines Objekts im Speicher Wichtige Befehle: Definition: int* ptr = address of type int; (ohne Startwert: int* ptr = nullptr;) Zugriff auf Zeiger: ptr = otr ptr // Pointer gets new target. Zugriff auf Target: *ptr = 5 // Target gets new value 5. Adresse auslesen: int* ptr to a = &a; // (a is int-variable) Vergleich: ptr == otr ptr // Same target? ptr != otr ptr // Different targets? (Anstatt int gehen natürlich auch andere Typen.) (Eine address of type int kann man durch einen anderen Zeiger oder auch mittels dem Adressoperator & erzeugen (siehe Beispiel unten).) Der Wert des Zeigers ist die Speicheradresse des Targets. Will man also das Target via diesen Zeiger verändern, muss man zuerst “zu der Adresse gehen”. Genau das macht der Dereferenz-Operator *. Beispiel: (Gelte int a = 5;) Wert von a: 5 Speicheradresse von a: 0x28fef8 Wert von a ptr: 0x28fef8 Wert von *a ptr: 5 Ein Zeiger kann immer nur auf den entsprechenden Typ zeigen. (z.B. int* ptr = &a; Hier muss a Typ int haben.) int a = 5; int* a ptr = &a; // a ptr points to a a ptr = a; // NOT valid (same as: a ptr = 5; ) // 5 is NOT an address. a ptr = &a; // valid *a ptr = 9; // a obtains value 9 std::cout