Brauche Hilfe bei Pointer



  • Hey Leute ich versuche mich gerade an Pointern und möchte eine Funktion swap erstellen welche den Inhalt bzw die Variablen austauscht.
    Leider kommt immer die selbe Fehlermeldung und zwar: invalid conversion from int to int* .
    Kann mir jemand erklären was genau diese Fehlermeldung bedeutet bzw was ich falsch gemacht habe ?

    Hier mein Code:

    #include <iostream>

    using namespace std;

    void swap1 (int* pa, int* pb)
    {
    int tmp;
    tmp=*pa;
    *pa=*pb;
    *pb=tmp;
    }

    void swap2 (int &a, int &b) //Vertauscht Inhalt der beiden Variablen
    {
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
    }
    int main()
    { int x=2, y=5;

    cout << x << " " << y << endl;

    swap1(x,y);
    cout << x << " " << y << endl;

    return 0;
    }



  • Übergibst du pointer an deine Funktion?



  • juhuuu schrieb:

    invalid conversion from int to int* .
    Kann mir jemand erklären was genau diese Fehlermeldung bedeutet bzw was ich falsch gemacht habe ?

    Die Funktion erwartet Adressen (vom Typ int* ) als Parameter. Du versuchst sie aber mit etwas anderem aufzurufen ( int ). Es gibt auch keine implizite Umwandlung von int nach int* , was den Aufruf funktionieren lassen würde.

    Was Dir fehlt, ist der Adress-Operator. x und y sind int -Variablen. Sie beziehen sich auf Speicherstellen, wo ein Wert vom Typ int hinterlegt ist. &x und &y sind Werte vom Typ int* , die die Speicheradressen von x und y repräsentieren. Variablen, die Adressen speichern, nennen wir Zeiger.


Log in to reply