Gast
#3572677
Hi Folks, Auf der Seite http://openbook.galileocomputing.de/c_von_a_bis_z/012_c_zeiger_006.htm verstehe ich das letzte Beispiel nicht: /* Möglichkeit3: Einen Zeiger als Argument übergeben */ char *test4(char *ptr){ char buffer[10]; ptr = buffer; strcpy(buffer, "testwert"); return ptr; } Vorher wurde geschrieben: /* Fehler: Funktion gibt die Adresse * einer lokalen Variablen zurück. */ char *test1(void){ char buffer[10]; strcpy(buffer, "testwert"); return buffer; } Müsste buffer bei Möglichkeit 3 nicht auch auf dem Stack liegen (lokale Variable) und daher falsch sein ? Andersrum buffer = ptr hätte ich es verstanden, wenn ptr mit char ptr[10] initialisiert wurde. Wobei buffer dann ja nur noch char * buffer sein müsste. Was macht der Compiler da ? Legt er den buffer auf den Stack und eine Zeile später ptr = buffer erkennt er, dass das eher wie static behandelt werden will ? Die anderen Beispiele mit static (das ist ja keine lokale Variable auf dem Stack mehr, nur die Sichtbarkeit ist eingeschränkt) und malloc sind klar. Gruß Marvin