Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
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 />
}