Verständnis Frage zu reference und zeigern
-
Hi,
ich hab vor kurzem mit cpp angefangen, ich komm momentan nicht dahinter warum & und * oder benutzt werden oder wahrscheinlich eher wann die genau eingesetzt werden.
*(zeiger)
Der Zeiger zeigt auf die Speicheradresse. Soweit ich auf einer Seite gesehen hab kann man auch mit einem zeiger den Inhalt rausholen indem man vor die Variable *variable macht.&(reference)
Die reference zeigt auf den Inhalt einer Variable, reference wird meist auch als "Aliasname" im Internet beschrieben. Klar Aliasname ist nur ein anderer Name für eine variable und das keine Kopien erstellt werden von der variable. Bedeutet das aber jetzt dass ich das am besten bei fast jeder variable machen soll die ich mache oder wie erkennt man am besten wann man das macht?Ich hoffe mir kann wer helfen würd mich freuen.

Gruß
Blubberbart
-
blubberbart schrieb:
&(reference)
Die reference zeigt auf den Inhalt einer Variable, reference wird meist auch als "Aliasname" im Internet beschrieben.Das "&" dient auch dazu die Adresse eines Objekts zurückzuliefern.
Beispiel#include <ostream> #include <iostream> int main () { int a = 10; int* p = &a; // p ist Zeiger auf ein int, und wird mit der Adresse von a initialisiert int& b = a; // b ist Referenz von a. std::cout << *p << std::endl; // p wird derefenziert, d.h. der Wert der Variable auf die p zeigt wird ausgegeben }Wann benutzt man Referenzen:
1. Man will eine Variable als In/Out Parametern an eine Funktion übergeben#include <ostream> #include <iostream> void foo (int& x) { ++x; } void goo (int x) { ++x; } int main () { int a = 10; foo (a); std::cout << "Nach foo a=" << a << std::endl; goo(a); std::cout << "Nach goo a=" << a << std::endl; }2. Das Kopieren eines Objektes (das gilt nicht für integrale Datentypen) ist zu aufwendig, so daß man lieber eine konstante Referenz übergibt.
class Foo ( ... }; void foo (Foo const& f) { }