reservierung von speicher im heap



  • hallo,

    ich versuche in einer funktion speicher auf dem heap zu reservieren.
    ich möchte in der funktion "get_variables" die variablen *a und *b mit werten initialisieren, das sie nach dem aufruf der funktion neue werte besitzem!

    void get_variables(int *a, int *b)
    {
         //reservierung des speichers auf dem heap
         int *pointer_a = (int *) calloc(1, sizeof(int) );
         int *pointer_b = (int *) calloc(1, sizeof(int) );
    
         //zwischenvariablen
         int p = 88;
         int q = 99;
    
         //zuweisung der neuen werte
         *pointer_a = p;
         *pointer_b = q;
    
         //testausgabe [gewünschte ausgaben werden gemacht]
         printf("Inhalt von pointer_a: %d \n", *pointer_a);
         printf("Inhalt von pointer_b: %d\n", *pointer_b);
    
         //zuweisung des im heap reservierten speichers zu den übergebenen variablen 
         //a und b
         a = pointer_a;
         b = pointer_b;
    }
    
    int main(void)
    {
        int *a = NULL;
        int *b = NULL;
    
        int x = 5;
        int y = 6;
    
        a = &y;
        b = &x;
    
        get_variables(a, b);
    
        //hier sollten jetzt die neuen werte, die in get_variables gesetzt wurden, 
        //angezeigt werden - dies ist leider nicht der fall
        printf("Ausgabe von a: %d\n", *a);
        printf("Ausgabe von b: %d\n", *b);
    
        getchar();
    }
    

    meine frage:
    wie kann ich die übergebenen variablen a und b initialisieren?
    ich möchte schon mit der reservierung aus dem heap arbeiten.
    was mache ich falsch?!



  • ** verwenden und die Adressen der Pointer an die Funktion übergeben.

    void get_variables(int **a, int **b)

    und get_variables(&a, &b);



  • vielen dank 🙂

    in get variables noch die zuweisung:
    *a = pointer_a;
    *b = pointer_b;

    danke für deine antwort!! 😃
    👍


Anmelden zum Antworten