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 vonint
nachint*
, was den Aufruf funktionieren lassen würde.Was Dir fehlt, ist der Adress-Operator.
x
undy
sindint
-Variablen. Sie beziehen sich auf Speicherstellen, wo ein Wert vom Typint
hinterlegt ist.&x
und&y
sind Werte vom Typint*
, die die Speicheradressen vonx
undy
repräsentieren. Variablen, die Adressen speichern, nennen wir Zeiger.