problem mit Zeigern
-
hi ich habe ein Problem mit Zeigern. Ich habe folgendes Programm geschrieben um mir selber Zeiger noch mal zu veranschaulichen:
#include <iostream> using namespace std; namespace add_space { void add_ref(int x, int y, int &erg) { erg = x + y; } void add_ptr(int x, int y, int *erg) { *erg = x + y; } } int main() { int x(5), y(10), erg; cout << " *: "; add_space::add_ptr(x, y, erg);//Fehler: int kann nicht in int* konvertiert werden cout << erg << "\n\n"; add_space::add_ref(x, y, erg); cout << " &: " << erg << "\n\n"; }könnte mir einer meinen Fehler erklären und noch mal ganz einfach sagen was Zeiger sind, Sie haben doch als wert die Adresse von dem Objekt auf das sie zeigen oder?
Und Referenzen haben den selben wert wie das Objekt auf das sie Zeigen(?).fg Wurst
P.S Sorry für die dumme Frage^^
-
Ganz einfach.Die Fehlermeldung sagt doch schon alles.
Deine Funktion erwartet einen Zeiger, du gibst ihr aber einen int. D.h. du musst die Adresse deiner übergebenen Variable übergeben.
Zum anderen müsste einergein Zeiger sein, isser aber nicht.int erg; add_space::add_ptr(x, y, &erg);
-
Du kannst auch einfach sowas hier machen:
int erg; add_space::add_ptr(x, y, &erg);Damit fällt auch das Problem des nicht initialisierten Zeigers weg.
Das & ist der Addressoperator, damit übergibst du die Addresse des Objekts statt des Wertes.Ein Zeiger enthält die Addresse auf ein anderes Objekt, eine Referenz kann man sich vorstellen wie einen dereferenzierten Zeiger. Du kannst darauf zugreifen wie auf ein "normales" Objekt, es ist aber ein Zeiger drin.
-
cooool Danke!

stimmt ist irgendwie logisch

fg Wurst