Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

der Universität Oldenburg
Imperative Programmierung
Imperative Programmierung
Klassen - Verkettete Liste -
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
der Universität Oldenburg
der Universität Oldenburg
Sequentielle Liste - Array
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Arrays,Strings&Pointer in C/C++
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einführung in die Programmierung Datensammlung
Inhalt danach. inhalt danach inhalt danach inhalt danach inhalt danach inhalt danach.
Grundkonzepte Java - Klassendefinition
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmierung
Informatik 1 Letzte Übung.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Dynamische Datentypen
Variablenkonzept Klassisch, in Java Basistyp
Purga - Scriptengine Ein Einblick.
Prof. Dr.-Ing. Franz-Josef Behr
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Arrays und ArrayLists In JAVA.
Programmieren in C Grundlagen C 2
PHP: Operatoren und Kontrollstrukturen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Arrays und ArrayLists In JAVA.
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Diskrete Mathematik I Vorlesung 2 Arrays.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs - 3. Übung Boolesche Operatoren vom Problem zum Programm
Felder (Arrays).
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Die STL. Schreiben und Lesen von Dateien  Einbinden von  Lesen und Schreiben über stream-Objekte Streams führen Transformationen zwischen Programmobjekten.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Felder in der Informatik
 Präsentation transkript:

Pointer

* und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung (NULL) int *var2 = &var1; ○ // … auf gültige Variable int &var3 = var1; ○ // Referenz auf var1, explizite Initialisierung muss sein  Gleiche Syntax (ohne Initialisierung) im Funktionskopf

* und &  Verwendung bei Zuweisung Referenz wie ganz normale Variable! Zugriff auf den Inhalt der Variablen, auf die der Pointer zeigt ○ cout << *var2; // Dereferenzierung über * ○ *var2 = 10; // Auch schreibend möglich Zugriff auf die Adresse der Variablen, auf die der Pointer zeigt ○ cout << var2; // Die Adresse ist der Inhalt des Pointers Zugriff auf Adresse einer normalen Variablen ○ var2 = &var1;

Dynamische Speicherverwaltung  Anfordern, Verwalten und Freigeben von Speicher nach Bedarf zur Laufzeit  Spezielle Operatoren in C++ new zur Resservierung des Speichers ○ keine Garantie einer impliziten Initialisierung! delete zur Freigabe des verwendeten Speichers ○ nur auf einen BasePointer (zeigt auf den Anfang eines reservierten Speicherblockes) anwendbar! int32 *dynVar = new int32; delete dynVar;

Dynamische Speicherverwaltung  Pointer beliebig oft verwendbar  Speicherreservierung mit expliziter Initialisierung dynVar = new int32(10);  Wenn ein Pointer nicht mehr auf eine gültige Variable zeigt, auf NULL setzen! delete dynVar; dynVar = NULL;

Aufgabe 9: Nur noch Pointer!  Überarbeite Aufgabe 7 und 8 dahin, dass keine primitiven Variablen verwendet werden!  Aufgabe 7: Ausgabe von Adresse und Inhalt von Variablen (int32, bool, double) Benutze nur einen Pointer je Datentyp!  Aufgabe 8: Verdoppeln von int32 und int64 Variablen

Dynamische Arrays  Speicheranforderung für ein gesamtes Array  Anzahl der gewünschten Elemente in eckigen Klammern hinter dem Datentyp const uint16 LENGTH = 10; int32 *dynArray = new int32[LENGTH];  Pointer zeigt auf den Anfang (das erste Element) des dynamischen Arrays  Freigabe durch delete[] dynArray;

Dynamische Arrays  Zugriff auf Elemente des Arrays Eckige Klammern mit Nummer des Elements Keine implizite Initialisierung! Iterator und Pointerarithmetik int32 *iterator = dynArray; for (uint16 count = 0; count < LENGTH; count++) *iterator++ = 0; // Wert von iterator wird auf 0 gesetzt // danach wird iterator incrementiert

Pointerarithmetik  Addieren von einem Wert zu einem Arraypointer bewirkt das Vorrücken des Pointers um die entsprechende Anzahl an Elementen unabhängig von der Elementgröße! andere arithmetische Operationen ebenfalls möglich  Vorsicht bei Dereferenzierung! *iterator + 5 // Wert um 5 erhöht *(iterator + 5) // Pointer um 5 erhöht

Statische Arrays und Pointer  Pointer und statische Array-Variablen sind austauschbar Pointerarithmetik funktioniert mit statischen Arrays statische Arrays intern über Pointer realisiert void showArray(const int32 array[ ], uint16 length) { while (length--) cout << "[" << *array++ << "] "; cout << endl; } showArray(dynArray, LENGTH);

Pointer und call-by-reference  Wie die Adresse, auf die der Pointer zeigt nachhaltig verändern?  int32 *&dst – Referenz auf einen Pointer auf einen int32 void Clone(int32 *&dst, const int32 src[ ], uint16 length) { dst = new int32[length]; int32 *dstIterator = dst; while (length--) *dstIterator++ = *src++; }

Aufgabe 10: Dynamische Erweiterung eines Arrays  Erstelle ein dynamisches Array der Länge 10  Erstelle eine Schleife mit 21 Durchläufen weise dem Array an der Stelle Durchlaufzähler das Ergebnis der Funktion zur Verdoppelung des Zahlenwertes mit dem Durchlaufzähler als Parameter zu Vergrößere bei Bedarf das Array um jeweils weitere 10 Elemente  Gib den Inhalt des gesamten Arrays in der Konsole aus