Hi,
ich lese gerade das Buch "C von A bis Z" und bin mittlerweile beim Kapitel über Zeiger.
Leider ist das Buch an manchen Stellen nicht ganz klar formuliert, weshalb des öfteren Fragen auftreten, wovon ich eine endlich mal loswerden möchte![Smile :-) :-)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Da das Buch online verfügbar ist, kann ich euch gleich den Link posten. Ich bin gerade hier: Klick
Eine Passage weiter unten verstehe ich nicht ganz.
Der Autor beschreibt noch einmal, dass bei einem Funktionsaufruf Daten wie lokale Variablen, Parameter etc auf dem Stack abgelegt werden. Dieser Stackframe bleibt ja nur so lange erhalten, bis die Funktion beendet wird.
Nun spricht der Autor die Problematik an, dass der Zeiger in der Funktion auf einen lokalen Speicherbereich zeigt. Wenn der Zeiger nun zurückgegeben und die Funktion beendet wird, dann geht dieser Speicherbereich ja "verloren". Der von der Funktion zurückgelieferte Zeiger würde somit auf einen "ungültigen Speicherbereich" (wenn ich das mal so nennen darf) zeigen.
Habe ich das bis hierher richtig verstanden?
Die Lösung mit dem static ist klar.
Die Lösung mit malloc wird erst später im Buch besprochen.
Bleibt noch die letzte Möglichkeit das Problem zu beseitigen:
Der Funktion wird ein Puffer/Zeiger übergeben.
Und hier endet meine Vorstellungskraft
Denn in dem Code-Beispiel wird dem übergebenen Zeiger ja trotzdem wieder die Adresse eines lokalen Speicherbereichs übergeben, oder? Aber warum funktioniert das dann auf einmal?
Gruss
M_Kay
ich lese gerade das Buch "C von A bis Z" und bin mittlerweile beim Kapitel über Zeiger.
Leider ist das Buch an manchen Stellen nicht ganz klar formuliert, weshalb des öfteren Fragen auftreten, wovon ich eine endlich mal loswerden möchte
![Smile :-) :-)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Da das Buch online verfügbar ist, kann ich euch gleich den Link posten. Ich bin gerade hier: Klick
Eine Passage weiter unten verstehe ich nicht ganz.
Der Autor beschreibt noch einmal, dass bei einem Funktionsaufruf Daten wie lokale Variablen, Parameter etc auf dem Stack abgelegt werden. Dieser Stackframe bleibt ja nur so lange erhalten, bis die Funktion beendet wird.
Nun spricht der Autor die Problematik an, dass der Zeiger in der Funktion auf einen lokalen Speicherbereich zeigt. Wenn der Zeiger nun zurückgegeben und die Funktion beendet wird, dann geht dieser Speicherbereich ja "verloren". Der von der Funktion zurückgelieferte Zeiger würde somit auf einen "ungültigen Speicherbereich" (wenn ich das mal so nennen darf) zeigen.
Habe ich das bis hierher richtig verstanden?
Die Lösung mit dem static ist klar.
Die Lösung mit malloc wird erst später im Buch besprochen.
Bleibt noch die letzte Möglichkeit das Problem zu beseitigen:
Der Funktion wird ein Puffer/Zeiger übergeben.
Und hier endet meine Vorstellungskraft
![Big grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)
Gruss
M_Kay