07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

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

c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 84<br />

• C++ Jedoch manchmal, insbesondere wenn die Variable großen Speicherbedarf beinhaltet,<br />

möchte man zur Laufzeit den Extraspeicher und die Kopierzeit eines CALL BY<br />

VALUE sparen, trotzdem aber sicher sein, dass der aktuelle Parameter nicht geändert<br />

werden kann, auch nicht bei einem ungewollten Programmierfehler in der Funktion.<br />

Dazu bietet sich die konstante Referenz an (7.31b). Dieses wird sehr oft bei Objekten<br />

getan (Kap. 9).<br />

Syntax:<br />

DeklarationKonstanteReferenz [NV] 14/20 const Typ &Variable<br />

Bei konstanter Referenz ist als aktueller Parameter ein Ausdruck, ggf. sogar anderen<br />

Typs, erlaubt (Zwischenspeicherung in temporärer Variable).<br />

(2) Wenn ein Parameter durch die Funktion geändert werden soll, ist folgendes zu tun:<br />

• Anwenden der (nichtkonstanten) Referenzübergabe<br />

• oder einer anderen Möglichkeit (Zeiger), weitere Diskussion siehe (12.42, 12.43).<br />

Bsp s. (7.45).<br />

(7.45) Bsp Beispielprogramm zu Parameterübergabe Wert und Referenz (nichtkonstant und konstant);<br />

in der Vorlesung wird die Speicherbelegung besprochen.<br />

#include // Beispielprogramm D07-45.CPP<br />

using namespace std;<br />

// Funktionsdeklarationen; Definitionen s. unten<br />

void tauschDenkste(int par1, int par2);<br />

void tausch(int &par1, int &par2);<br />

int neuWert(int par1, const int &par2, int &par3);<br />

int main()<br />

{<br />

int i, j, k;<br />

}<br />

// Vertauschen nein und ja:<br />

i=5; j=7;<br />

tauschDenkste(i,j);<br />

cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!