Pointer als Out-Paramter



  • Hallo Leute,

    ich möchte einen Pointer als Argument an eine Funktion übergeben, die dann einen Speicherbereich alloziert und den Pointer so modifiziert, dass er darauf zeigt. Das klappt aber leider nicht so...

    #include <stdio.h>
    #include <stdlib.h>
    int myalloc(void *ptr) {
            long *p = malloc(sizeof(long));
            *p = 17;
            ptr = p;
            printf("myalloc: pointer=%lu, value=%ld\n", (unsigned long)p, *p);
            return *p;
    }
    int main() {
            long *p;
            myalloc(p);
            printf("main: pointer=%lu, value=%ld\n", (unsigned long)p, *p);
            return 0;
    }
    

    Ausgabe:

    myalloc: pointer=2147491856, value=17
    main: pointer=2199023349760, value=0
    

    Wisst ihr was ich falsch mache, bzw. wie ich die gewünschte Funktionalität erreichen kann?

    Dank Euch!



  • dazu musst du logischerweise einen pointer auf einen pointer übergeben. void **ptr.



  • ^^ oder einfach einen pointer zurückgeben, dann brauchste keinen **
    🙂


Anmelden zum Antworten