Breymann. C++ Einführung und professionelle Programmierung
Breymann. C++ Einführung und professionelle Programmierung Breymann. C++ Einführung und professionelle Programmierung
Mehrdimensionale Arrays mit variabler Feldgröße Mit variabler Feldgröße ist hier gemeint, dass die Größe des Arrays zur Compilierzeit nicht bekannt ist. Die Größe kann dann natürlich nicht als Teil des Datentyps aufgefasst werden! Lösung: 1. Feld von Zeigern auf eindimensionale Arrays (Zeilen) anlegen, 2. jedem dieser Zeiger eine Zeile mit Spalten zuordnen. int z,s; // Zeilen , Spalten cout > z >> s; // erst zur Laufzeit bekannt mat ✲ mat[0] ✲ mat[1] ✲ mat[2] ✲ mat[3] ✲ Abb. 6.8: Zweidimensionales dynamisches Array Breymann C++, c○ Hanser Verlag München Inhalt ◭◭ ◭ ◮ ◮◮ 250 zurück Ende
Feld von Zeigern auf Zeilen anlegen: // mat ist ein konstanter Zeiger auf Zeiger auf int int **const mat = new int* [z]; // jeder Zeile Speicherplatz zuordnen: for(int i = 0; i < z; ++i) mat[i] = new int [s]; mat kann nun wie eine gewöhnliche Matrix benutzt werden. Der Zugriff auf ein Element der Matrix mat in Zeile i und Spalte j wird vom Compiler in die entsprechende Zeigerdarstellung umgewandelt. // Beispiel für die Benutzung der dynamisch erzeugten Matrix for(int iz = 0; iz < z; ++iz) { } for(int is = 0; is < s; ++is) { } mat[iz][is] = iz*s + is; cout
- Seite 199 und 200: class Beispiel { int zahl; public:
- Seite 201 und 202: 5.8 Wie kommt man zu Klassen und Ob
- Seite 203 und 204: 5.8.1 Einige Analyse-Überlegungen
- Seite 205 und 206: 6. Intermezzo: Zeiger - Zeiger und
- Seite 207 und 208: . 99 . . 10123 . Adresse Name 10122
- Seite 209 und 210: int *ip2 = &i; bewirkt: ip ip2 ❩
- Seite 211 und 212: NULL-Zeiger Eigenschaften: • Ein
- Seite 213 und 214: . Index 17 35 112 -3 1000 . 0 1 2 3
- Seite 215 und 216: Zeiger und Arrays Zeiger und Arrays
- Seite 217 und 218: sizeof funktioniert jedoch nicht be
- Seite 219 und 220: 6.3 C-Zeichenketten C-Zeichenkette
- Seite 221 und 222: Vordefinierte Funktionen: Header #
- Seite 223 und 224: char-Arrays // Definition und Initi
- Seite 225 und 226: Beispiele: Schleifen mit Strings St
- Seite 227 und 228: Strings kopieren char* original = "
- Seite 229 und 230: 6.4 Dynamische Datenobjekte new: Er
- Seite 231 und 232: Dynamisch erzeugte Struktur Erzeugu
- Seite 233 und 234: 6.4.1 Freigeben dynamischer Objekte
- Seite 235 und 236: • Mit new erzeugte Objekte unterl
- Seite 237 und 238: 6.5 Mehrdimensionale C-Arrays 6.5.1
- Seite 239 und 240: Arrays als Funktionsparameter C-Arr
- Seite 241 und 242: void Tabellenausgabe2D(int (*T)[3],
- Seite 243 und 244: Funktion für statische zwei-dimens
- Seite 245 und 246: Aufgaben 6.1 Die Äquivalenz von *(
- Seite 247 und 248: 6.5.2 Dynamisch erzeugte mehrdimens
- Seite 249: Eine dreidimensionale Matrix ist ei
- Seite 253 und 254: 6.6 Binäre Ein-/Ausgabe = unformat
- Seite 255 und 256: Lesen einer Datei double.dat mit do
- Seite 257 und 258: void upcase(char* s) { // In der AS
- Seite 259 und 260: 6.7.2 Gefahren bei der Rückgabe vo
- Seite 261 und 262: int main() { int a = 1700, b = 1000
- Seite 263 und 264: #include using namespace std; #incl
- Seite 265 und 266: 6.9 this-Zeiger • this ist ein Sc
- Seite 267 und 268: 7. Objektorientierung 2 - eine Stri
- Seite 269 und 270: const char& at(std::size_t position
- Seite 271 und 272: 7.1.1 friend-Funktionen Optionen f
- Seite 273 und 274: 3. friend-Funktion Falls es aus Lau
- Seite 275 und 276: • Die static-Funktion Anzahl() so
- Seite 277 und 278: Implementation der Klasse nummerier
- Seite 279 und 280: Der Kopierkonstruktor hat hier eine
- Seite 281 und 282: Der Destruktor vermerkt, dass es nu
- Seite 283 und 284: Anfang eines neuen Blocks { nummeri
- Seite 285 und 286: 7.2.1 Klassenspezifische Konstante
- Seite 287 und 288: template class simpleStack { publi
- Seite 289 und 290: • Der Datentyp T steht für einen
- Seite 291 und 292: cout
- Seite 293 und 294: 7.3.2 Stack mit statisch festgelegt
- Seite 295 und 296: Nur die Deklarationen in einem Anwe
- Seite 297 und 298: 8. Vererbung • Eigenschaften, die
- Seite 299 und 300: Die Unterklasse erbt von der Oberkl
Feld von Zeigern auf Zeilen anlegen:<br />
// mat ist ein konstanter Zeiger auf Zeiger auf int<br />
int **const mat = new int* [z];<br />
// jeder Zeile Speicherplatz zuordnen:<br />
for(int i = 0; i < z; ++i)<br />
mat[i] = new int [s];<br />
mat kann nun wie eine gewöhnliche Matrix benutzt werden. Der Zugriff<br />
auf ein Element der Matrix mat in Zeile i <strong>und</strong> Spalte j wird vom<br />
Compiler in die entsprechende Zeigerdarstellung umgewandelt.<br />
// Beispiel für die Benutzung der dynamisch erzeugten Matrix<br />
for(int iz = 0; iz < z; ++iz) {<br />
}<br />
for(int is = 0; is < s; ++is) {<br />
}<br />
mat[iz][is] = iz*s + is;<br />
cout