07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

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.

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

str1[0]=’P’; // (eigentlich) nicht erlaubt<br />

str2[0]=’P’; // erlaubt: Ptring2<br />

*str3=’P’; // erlaubt: PTRing3<br />

str1=str2; // erlaubt; jetzt STRING1 jedoch nicht mehr zugänglich!<br />

str2=str3; // nicht erlaubt (12.32b)<br />

(12.54) Ein ” beliebter“ Fehler im Zusammenhang mit der Rückgabe von Strings aus Funktionen ist<br />

die Rückgabe der Adresse von automatischem Speicher.<br />

// SEHR schwerwiegender Fehler:<br />

char *wotag(int ord)<br />

{<br />

char str[20];<br />

switch(ord) {<br />

case 1: strcpy(str,"Montag"); break;<br />

// ...<br />

case 7: strcpy(str,"Sonntag"); break;<br />

}<br />

return str; // FALSCH!<br />

}<br />

Es bieten sich mehrere Lösungsmöglichkeiten für die Implementation des Funktionsblocks<br />

an:<br />

// Version (a) - jedoch NACHTEIL??<br />

{<br />

static char str[20];<br />

switch(ord) {<br />

// ... (wie oben) ...<br />

}<br />

return str;<br />

// NICHT abgefangen: ord außerhalb des erlaubten Bereichs<br />

}<br />

// Version (b), besser:<br />

{<br />

char *str;<br />

switch(ord) {<br />

case 1: str="Montag"; break;<br />

// ...<br />

case 7: str="Sonntag"; break;<br />

default: str="TagUnbekannt";<br />

}<br />

return str;<br />

}<br />

// Version (c), ebenfalls besser:<br />

{<br />

switch(ord) {<br />

case 1: return "Montag";<br />

// ...<br />

case 7: return "Sonntag";<br />

}<br />

// Statt "default" ggf. besser hier (zur Befriedigung des Compilers):<br />

return "TagUnbekannt";<br />

}

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!