Zeiger als Argument für Funktion



  • Ich bin relativ neu in C(++) und lese mir grad ein Open Book zum Thema C durch.
    Doch an einer Stelle verzweifle ich im Moment:
    Folgender Quelltext:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char *test(char *ptr){
    	char buffer[10];
    	ptr = buffer;
    	strcpy(buffer, "testwert");
    	return ptr;
    }
    
    int main(void) {
    	char *ptr;
    
    	test(ptr);
    	printf("%s\n", ptr);
    	return EXIT_SUCCESS;
    }
    

    So ähnlich ist es hier zu finden (ganz unten).
    Warum funktioniert das nicht?



  • Ähmmm, ganz unten auf der Seite steht schon was der Fehler ist 😉

    Nochmal: Das lokale Array 'buffer' lebt nach verlassen der Funktion nicht mehr.



  • TactX schrieb:

    Ähmmm, ganz unten auf der Seite steht schon was der Fehler ist 😉

    Nochmal: Das lokale Array 'buffer' lebt nach verlassen der Funktion nicht mehr.

    Schau dir meinen Quelltext bitte nochmal an, ich hab es leider etwas verwirrend beschrieben.
    In der Quelle heißt die Funktion test4();



  • C Anfänger schrieb:

    In der Quelle heißt die Funktion test4();

    test4 funzt nicht.
    wollteste sowas?

    void test (char **ptr)
    {
        *ptr = "testwert";
    }
    
    int main(void) 
    {
        char *ptr;
        test (&ptr);
        printf("%s\n", ptr);
        return EXIT_SUCCESS;
    }
    

    btw: pronix war schon immer mist



  • Ich wollte eigentlich eine Funktion, der ein Zeiger als Argument übergeben wird.
    Dieser Zeiger soll dann auf ein, in der neuen Funktion deklarierten, char-Array zeigen.
    So wie es halt in test4(char*); gezeigt wurde, nur so das es halt funktioniert. :>

    Und schlecht find ich das Buch nicht, hat halt nur nen paar Fehler, aber welches Buch hat das nicht? Kann mich da an C++ Bücher erinnern die viel schlimmer waren. :>



  • *omg* jetzt seh ich erst dass pronix wirklich üble Fehler drin hat 😮



  • C Anfänger schrieb:

    Und schlecht find ich das Buch nicht, hat halt nur nen paar Fehler, aber welches Buch hat das nicht? Kann mich da an C++ Bücher erinnern die viel schlimmer waren.

    na, da hätteste das pronix-machwerk mal vor ca. 'nem jahr sehen sollen. sah so aus als hätt' einer mal ein c-tutorial gelesen und daraufhin gleich selber ein buch geschrieben, in dem alles das stand, was er selbst nicht verstanden hat. c++ ist übrigens viel komplexer als c. dass in c++ büchern hin und wieder kleine fehler zu finden sind, ist normal. aber wenigstens ist pronix ja umsonst 😃 und wenn man sich mit den pronix-bugs beschäftigt lernt man auch was dazu. ausserdem hast ja noch uns, wenn's irgendwo hakelt 😉


Anmelden zum Antworten