hi,
ich refreshe/erweitere z.Z. meine grundlegenden C kenntnisse mit diesem
ebook
http://openbook.galileocomputing.de/c_von_a_bis_z/012_c_zeiger_006.htm#mj7a8cbb91c00cd7a7db170b71c55a2118
im kapitel pointer bin ich auf ein problem gestoßen, und zwar geht es um
folgendes:
das hier funktioniert nicht, weil der string nach beenden der funktion
aufgelöst wird. die variable wird aber nicht gelöscht, oder? es wird
lediglich der speicherbereich freigegeben und zur sicherheit kompiliert
der kompiler das nicht mehr(jedenfalls meiner) (gcc)
1 | /* Fehler: Funktion gibt die Adresse
|
2 | * einer lokalen Variablen zurück. */
|
3 | char *test1(void){
|
4 | char buffer[10];
|
5 | strcpy(buffer, "testwert");
|
6 | return buffer;
|
7 | }
|
das hier aber funktioniert/soll funktionieren. umgeht man damit nicht
nur die warnung des kompilers? der string wird doch trotzdem
gelöscht/freigegeben oder nicht?
andererseits wundert mich das sich buffer nicht selbst übergeben lässt.
schließlich ist buffer doch auch nur ein pointer auf das erste element
:/ oder nicht?
1 | /* Möglichkeit3: Einen Zeiger als Argument übergeben */
|
2 | char *test4(char *ptr){
|
3 | char buffer[10];
|
4 | ptr = buffer;
|
5 | strcpy(buffer, "testwert");
|
6 | return ptr;
|
7 | }
|
ich hoffe ihr könnt licht ins dunkel bringen :/
gruß