Zeiger und Referenzen
-
Ich lern grad C++, und bin bei zeigern und referenzen. die dinger hab ich soweit kapiert, noch erscheinen sie mir nicht sinvoll, aber was solls. Nur eins kapier ich nich ganz, und zwar den unterschied zwischen zeigern und referenzen...beispiel:
Dieser code:
#include <iostream> #include <stdio.h> using namespace std; int main() { int a=10; int *b=&a; cout<<a<<endl; cout<<*b<<endl; *b=20; cout<<a<<endl; getchar(); }
Tut ziemlich genau das selbe wie dieser:
#include <iostream> #include <stdio.h> using namespace std; int main() { int a=10; int &b=a; cout<<a<<endl; cout<<b<<endl; b=20; cout<<a<<endl; getchar(); }
Der erste ist mit zeigern, der zweite mit referenzen. Ich finde die version mit den referenzen besser, da klarer erkennbar ist das die variablen einfach das selbe tun. der erste mit den zeigern hat also unnötigen quatsch drin (soweit ich das jetzt sehe, das wohl nicht stimmt frag ich). Aber zeiger werden irgendwie öfter verwendet als reine referenzen, warum? was is an denen besser??
Also, klärt mich ma auf, wo ist der unterschied?
-
Benutz bitte die Suche, wir haben schon häufig darüber diskutiert.
Devil
-
Mach Dir bitte den Unterschied klar, dass Du den Speicherort des Zeigers aber nicht den der Referenz aufzeigen kannst.
-
Zeiger und Referenzen schrieb:
Aber zeiger werden irgendwie öfter verwendet als reine referenzen, warum?
Falsche Wahrnehmung .... Referenzen sind so unscheinbar, dass sie gar nicht so auffallen
Unabhängig davon sind Zeiger aber natürlich Objekte, Referenzen nicht. Zeiger haben (wie Erhard schon sagte) einen Speicherort, Referenzen nicht. Zeiger können verändert werden, Referenzen müssen immer mit einem gültigen Objekt initialisiert werden und behalten diese Zuordnung dann für ihr restliches Leben.
Daraus ergibt sich, dass es einige Sachen gibt, die nur mit Zeigern funktionieren. Dynamische Strukturen wie Bäume und verkettete Listen beispielsweise. Einige funktionieren nur mit Referenzen (Operatorüberladung, Kopierkonstruktor). Einige mit beiden, und dann muss man sehen, was man bevorzugt. Die meisten bevorzugen in dem Falle Referenzen, weil sie syntaktisch einfacher sind. Manche bevorzugen in manchen Fällen Zeigern, weil man besser auf einen Blick sieht, was dort passiert.