16.09.2017 Aufrufe

Vorkurs Informatik

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

338 C Programmieren in C++<br />

(a) int i=423; (b) int *ptr_i; (c) ptr_i=0; (d) ptr_i = &i;<br />

Abbildung C.5: Schematische Darstellung von Speicherbereichen im Zusammenhang mit Verwendung<br />

von Adressvariablen und Referenzoperatoren<br />

in Zeile 13 den Rückgabetyp „unsigned int“ aufweist (s. Abschnitt C.2.1). Daher werden auch die Variablen<br />

„index“ und „laengeVektor“ entsprechend deklariert. Obwohl dieses Beispiel sicherlich recht<br />

einfach ist und nur einen sehr kleinen Umfang des Funktionsumfangs der Standardbibliothek widerspiegelt,<br />

vermittelt es doch die recht intuitive Verwendung der zugehörigen Klassen. Für weitere Details, die<br />

über den Umfang dieses Buches hinausgehen würden, sei beispielsweise auf die Literaturempfehlungen<br />

verwiesen (s. Abschnitt D).<br />

C.3 Zeiger und Referenzen<br />

Im Abschnitt C.2.3 wurde im Zusammenhang mit der Erklärung des Arrays auch einleitend auf die Repräsentierung<br />

im Speicher eingegangen. Das in der Abbildung C.4a dargestellte Array repräsentiert die<br />

Ausprägung der Anweisung „int a[] = {11,5,8,3,15,13,9,19,18,10,4};“ mit einem benötigten<br />

Speicherplatz von 44 Bytes, welches den Adressen 0x1000 bis 0x1043 entspricht. Zusammenfassend<br />

bezeichnet a somit den Namen, int den Datentyp, {11,5,8,3,15,13,9,19,18,10,4} den Wert und<br />

0x1000 die (Anfangs-)Adresse der Variablen. Bisher konnte aus diesen Informationen nur abgeleitet werden,<br />

dass z. B. die Variable a[0] an der Adresse 0x1000 beginnt oder die Variable a[4] an der Adresse<br />

0x1016. Die Programmiersprache C++ stellt aber auch einen Mechanismus zur Verfügung, um Informationen<br />

zur Speicheradresse zu erhalten. Mithilfe des sogenannten Referenzoperators „&“ kann zu einer<br />

Variablen die zugehörige Speicheradresse ermittelt werden. Die Bezeichnung resultiert aus dem Sachverhalt,<br />

dass die Adresse auch die Referenz einer Variablen repräsentiert. Beispielsweise liefert die Anweisung<br />

&a[0];<br />

die Speicheradresse 0x1000 für unser Anwendungsbeispiel. Es ist dabei zu beachten, dass vonseiten der<br />

Programmierenden kein Einfluss auf die Zuweisung der Speicheradresse durch das Rechnersystem besteht.<br />

Dies erfolgt automatisch durch interne Mechanismen des Rechnersystems, deren Konzepte über den Rahmen<br />

dieses Buches hinausgehen. Sofern ein Programm mehrmals ausgeführt wird, kann das Array daher<br />

auch ab unterschiedlichen Adressen im Speicher abgelegt werden. Da die Variable a[0] vom Typ Integer<br />

ist und die Anweisung &a[0] als Ergebnis die Speicheradresse 0x1000 zur Verfügung stellt, lässt sich daraus<br />

auch im Umkehrschluss ableiten, dass die Speicheradresse 0x1000 eine Position eines Objektes vom<br />

Typ Integer repräsentiert. Dieses bedeutet, dass die Speicheradresse selber nicht vom Typ Integer ist und<br />

daher auch nicht einer Variablen vom Typ Integer zugewiesen werden kann. Es ist daher notwendig für diese

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!