Summary

This document appears to be programming lecture notes for week 13. It covers topics like arrays, pointers, and dynamic data types. It has c++ code examples.

Full Transcript

Programmier-Befehle - Woche 13 Datentypen Array “Massenvariable” eines bestimmten Typs Wichtige Befehle: Definition: int my arr = {2, 3, 8, -1, 3}; Zugriff: my arr = 8 * my arr; (Anstatt int gehen natürlich auch andere Typen.) (Die Definition kann...

Programmier-Befehle - Woche 13 Datentypen Array “Massenvariable” eines bestimmten Typs Wichtige Befehle: Definition: int my arr = {2, 3, 8, -1, 3}; Zugriff: my arr = 8 * my arr; (Anstatt int gehen natürlich auch andere Typen.) (Die Definition kann auch ohne Initialisierung erfolgen: int my arr;) Wie bei Vektoren beginnen die Indizes bei 0. Allerdings muss der Program- mierer bei Arrays selber sicherstellen, dass die Indizes nicht über den Array hinausgehen, weshalb wir von der Verwendung von Arrays abraten und stattdessen Vektoren empfehlen. Zuweisungen (ausser Initialisierung), Vergleiche, etc. müssen element- weise erfolgen. Sie können nicht direkt gemacht werden. Die Länge des Arrays muss zum Kompilierzeitpunkt eindeutig be- stimmbar sein. (z.B. Literal oder const-Variable, die mittels Literal eingelesen wurde, etc.) int a; // Accessing an array: for (int i = 0; i < 10; ++i) a[i] = i; // a becomes {0 1 2... 9} a = 2; // NOT allowed, index 10 outside a[-4] = 2; // NOT allowed, index -4 outside // Copying an array: int b = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; for (int i = 0; i < 10; ++i) a[i] = b[i]; // Have to do it element-wise a = b; // NOT valid: direct array-copying is forbidden Seite 1 von 3 Programmier-Befehle - Woche 13 Dynamische Datentypen Ranges mit dynamischer Lebensdauer new...[], delete[] und Länge erstellen. int n; std::cin >> n; int* range = new int[n]; // Read in values to the range for (int* i = range; i < range + n; ++i) std::cin >> *i; delete range; // ERROR: must say: delete[] delete[] range; // This works Seite 2 von 3 Programmier-Befehle - Woche 13 Zeiger-Arithmetik Zeiger Iterieren Wichtige Befehle: Zeiger: int* ptr = new int; temporärer Shift: ptr + 3 ptr - 3 permanenter Shift: ++ptr ptr++ --ptr ptr-- ptr += 3 ptr -= 3 Distanz bestimmen: ptr1 - ptr2 Position vergleichen: ptr1 < ptr2 (Sonst: , >=, ==, !=) Achtung: Die grünen Shifts erzeugen einen neuen (temporären) Zeiger und verschieben ptr nicht. Die violetten Shifts verschieben aber ptr. // Read 6 values into an array std::cout > *i; // read into array element // Output: a+a, a+a, a+a for (int* i = a; i < a+3; ++i) { assert(i+3 < pTE); // Assert that i+3 stays inside. std::cout

Use Quizgecko on...
Browser
Browser