Pointer Übergabe in mehreren Instanzen von Funktionen



  • Hallo,

    ich möchte gerne eine Variable über einen Pointer in eine Funktion übergeben, welche sie nochmals weiter gibt.

    Allerdings kommt folgender Fehler: main.c(3): warning C4024: "ausgabe": unterschiedliche Typen für formalen und übergebenen Parameter 1

    So ungefähr soll es aussehen:

    void test (int *zahl){
        (*zahl)++;
        ausgabe (&zahl);
    }
    
    void ausgabe(int *wert){
        printf("wert = %i", &wert);
    }
    
    int main {
        int variable = 0;
        int *pntvar = &variable;
    
        test (&pntvar);
        return 0;
    }
    

    Kann mir jemand helfen? Habe ich genügend Informationen gegeben?

    Viele Grüße



  • ausgabe (zahl);
    

    Der Parameter ist ja schon vom Typ int*.
    ausgabe könnte auch folgende Signatur haben,

    void ausgabe(const int* wert);
    

    da der Wert von wert in dieser Funktion nicht geändert wird bzw. alleine schon aufgrund des Funktionsnamens und der damit verbundenen assoziierten Aufgabe nicht geändert werden sollte.



  • Beim zweiten Kaffee habe ich gerade erst

    printf("wert = %i", &wert);
    

    gesehen. Du musst natürlich in diesem Fall den Zeiger dereferenzieren: *wert

    Aufruf von test außerdem wie von ausgabe.

    test (pntvar);
    

    Oder gleich

    test (&variable);
    


  • Bei einem Pointer darf man nicht Reflexartig den Adressoperator einsetzen.

    Die Variable kann ja schon ein Pointer sein.



  • Ok vielen Dank euch!!
    Das mit const ... ist einleuchtend, das baue ich mal mit ein.

    mutroni


Log in to reply