Inf1-Skript9 - 9.1 Zeiger 112 9 Dynamische Variablen Alle...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 9.1 Zeiger 112 9 Dynamische Variablen Alle bisher verwendeten Variablen hatten einen Bezeichner und waren im soge- nannten Kellerspeicher (stack) des Laufzeitsystems abgelegt. Dank der Felder und Verbunde k¨ onnen komplexe, allerdings lediglich statische Datenstrukturen gebildet werden. Datenstrukturen, deren Gr¨ oße vor der Programmausf¨uhrung nicht bekannt sind, lassen sich mit den bisher bekannten Mitteln nicht beschreiben. Daher werden nun die sogenannten dynamischen Variablen eingef¨uhrt. Sie werden erst zur Laufzeit explizit erzeugt (mit der vordefinierten Prozedur NEW) und auch wieder beseitigt (mit der vordefinierten Prozedur DISPOSE). Kellerspeicher und Speicherung auf der Halde Bei einem Prozedur-Aufruf werden im Kellerspeicher in einem Bereich fester Gr¨ oße Informationen abgelegt, die f¨ur die Ausf¨uhrung der Prozedur notwendig sind. Die- ses sind u.a. die R¨ucksprungadresse, die Werte der formalen Parameter (Bindung formaler Parameter an aktuelle Argumente) und lokale Variablen. Nach Ausf¨uhrung des Prozeduraufrufs kann und wird der angelegte Bereich wieder gel¨ oscht. Da dynamische Variablen w¨ ahrend eines Programmlaufes prinzipiell in beliebiger Menge geschaffen werden k¨ onnen, ist es nicht m¨ oglich, ihnen feste Bezeichner zuzu- ordnen. Sie werden statt dessen durch Zeiger (pointer) identifiziert. Die dynamisch erzeugten Variablen werden nicht im Kellerspeicher, sondern auf der sogenannten Halde (heap) des Laufzeitsystems abgelegt. 9.1 Zeiger Zeiger k¨ onnen auf drei Arten definierte Werte erhalten: 1. Durch Speicherbelegung mittels NEW; damit weist zun¨ achst nur dieser Zeiger auf den frisch belegten Platz. 2. Durch Wertzuweisung eines anderen Zeigers; damit weisen beide Zeiger auf denselben Platz der Halde. Beachte: Die so bezeichnete dynamische Variable wird bei der Wertzuweisung nicht kopiert. 3. Durch Zuweisung von NIL (eine vordefinierte Konstante, Repr¨ asentant des Undefinierten). Die Verwaltung der Halde obliegt, im Gegensatz zum Kellerspeicher, dem Program- mierer. 9.1 Zeiger 113 PointerType ^ Type Es sei XT ein beliebiger Typ (oft ein Record). Falls PT und P durch TYPE PT = ^XT; VAR P: PT; definiert sind, dann belegt NEW(P); auf der Halde Speicherplatz f¨ur ein Objekt des Typs XT und weist P die Anfangs- adresse des belegten Speichers als Wert zu. DISPOSE(P); gibt diesen wieder frei. Der Zugriff auf den belegten Speicher erfolgt mit dem soge- nannten Dereferenzierungsoperator ^ . ReferencedVariable Variable ^ Dabei muß die Variable ein Zeiger-Typ sein....
View Full Document

This note was uploaded on 01/18/2010 for the course FB07 BP-04-B taught by Professor Kutrib during the Spring '09 term at Uni Giessen.

Page1 / 13

Inf1-Skript9 - 9.1 Zeiger 112 9 Dynamische Variablen Alle...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online