06.06.2015 Aufrufe

Was ist ein Zeiger? - Informatik in der Oberstufe

Was ist ein Zeiger? - Informatik in der Oberstufe

Was ist ein Zeiger? - Informatik in der Oberstufe

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Ausgabe:<br />

Feld a: 0 0 0<br />

Feld b: 0 0 0<br />

Feld a: 17 0 0<br />

Feld b: 17 0 0<br />

Feldveraen<strong>der</strong>ung <strong>in</strong> Methode<br />

Feld a: 17 0 21<br />

Feld b: 17 0 21<br />

Zahl = 15<br />

Zahlveraen<strong>der</strong>ung <strong>in</strong> Methode<br />

Zahl = 15<br />

Erklärung:<br />

1. Durch<br />

<strong>in</strong>t[] a;<br />

<strong>in</strong>t[] b;<br />

werden die Arrayvariablen a und b deklariert. Das Array gibt es noch nicht. Es wird schon<br />

Speicherplatz reserviert, aber nicht für das Array, son<strong>der</strong>n nur für a bzw. b zur Aufnahme<br />

<strong>der</strong> Speicheradresse für das noch anzulegende Feld. Der Inhalt <strong>ist</strong> jeweils null, d.h. es <strong>ist</strong><br />

noch k<strong>e<strong>in</strong></strong>e Adresse enthalten. Dementsprechend bekommt man mit<br />

Out.pr<strong>in</strong>tln ("b[0] = " + b[0]);<br />

beim Programmlauf <strong>e<strong>in</strong></strong>e NullPo<strong>in</strong>terException, d.h. man versucht mit Variablen, die <strong>e<strong>in</strong></strong>e<br />

Speicheradresse enthalten muss, zu arbeiten, obwohl sie k<strong>e<strong>in</strong></strong>e Speicheradresse enthält.<br />

2. Mit<br />

a = new <strong>in</strong>t[3];<br />

wird Speicherplatz für das Feld angelegt, alle Elemente von a werden automatisch auf 0<br />

gesetzt und a enthält nun die Speicheradresse des neu angelegten Feldes. Die Variable a <strong>ist</strong><br />

zu <strong>e<strong>in</strong></strong>em <strong>Zeiger</strong> o<strong>der</strong> Po<strong>in</strong>ter geworden.<br />

E<strong>in</strong>en ähnlichen Effekt erhält man, wenn man auf dem Desktop von WINDOWS zwei Verknüpfungen<br />

auf <strong>e<strong>in</strong></strong> Programm erzeugt. Wenn man nun das Programm verän<strong>der</strong>t (z.B. updatet),<br />

zeigen beide Verknüpfungen auf das gleiche verän<strong>der</strong>te Programm.<br />

3. Die Zuweisung<br />

b = a;<br />

führt zu k<strong>e<strong>in</strong></strong>em Fehler. Die Arrayvariable b erhält dadurch die gleiche Speicheradresse wie<br />

die Variable a. Beide Variable zeigen also nun auf das gleiche Feld.<br />

2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!