Benutzer:Havaniceday/Arrays und Zeiger

aus Wikipedia, der freien Enzyklopädie

↑ C++

Hinweis: Du darfst diese Seite editieren!
Ja, wirklich. Es ist schön, wenn jemand vorbeikommt und Fehler oder Links korrigiert und diese Seite verbessert. Sollten deine Änderungen aber der innehabenden Person dieser Benutzerseite nicht gefallen, sei bitte nicht traurig oder verärgert, wenn sie rückgängig gemacht werden.
Wikipedia ist ein Wiki, sei mutig!

Einleitung

Zeiger zeigen auf Speicheradressen. Der Typ bestimmt, wie wie viele benachbarte Speicherfelder benötigt werden um ein Objekt dieses Typs zu speichern. Wenn ein Zeiger inkrementiert wird, verschiebt sich seine gespeicherte Addresse um so viele Felder wie sein Elementtyp Speicherplatz verbraucht.

Beispiel:

short arr[] = { 0xCAFE, 0xBABE }; // 2-elementiges Array
short *parr = arr;  // Das Gleiche wie short *parr = &arr[0]
  Adresse  | Inhalt
-----------|--------
0x9FF34233 | 0xFE   arr[0] Anfang
0x9FF34234 | 0xCA   
0x9FF35235 | 0xBE   arr[1] Anfang
0x9FF35236 | 0xBA
   ...
0xA21B3185 | 0x33   parr enthaelt die Addresse von arr[0]
0xA21B3186 | 0x42
0xA21B3187 | 0xF3
0xA21B3188 | 0x9F   Ende parr

Wenn 'parr' mittels '++parr' inkrementiert wird, verschiebt sich seine gespeicherte Addresse hier um zwei Werte, da, - in diesem Beispiel -, ein short-Element zwei Byte in Anspruch nimmt (hier von 0x9ff34233 auf 0x9ff34235).

Initialisation

int ai[] = { 3,5,7,9,2,4 };   // Sechs int langes Array.
int ai2[64] = { 2,3,5,8 };    // Die letzten 60 Elemente werden mit 0 initialisiert.
double ad[18] = {};           // Alle Elemente werden mit 0.0 initialisiert.
char ca[] = {'x','y','z'};    // Drei char langes Array, ohne abschliessendes '\0'.