2016-08-23 4 views
-3

Lassen Sie mich damit beginnen, dass ich Zeiger verstehe. Ich weiß was sie sind und wie sie arbeiten. Aber ich kenne sie, weil ich mir visuell vorstelle, wie sie im Gedächtnis verwendet werden, indem ich die Adresse von etwas anderem speichere und so weiter.Was geschieht im Speicher, wenn ich Referenzen in C++ verwende?

Ich versuche, Informationen online zu finden, und ich kann scheinen, irgendwelche Informationen darüber zu finden, wie Verweisungen behandelt werden.

Könnte jemand verlinken oder erklären, wie sie arbeiten, wenn sie das Speichermanagement im Auge haben?

thx

+0

Das ist eigentlich Compiler-Implementierung spezifisch. Compiler-Entwickler können mit verfügbaren CPU-Befehlssätzen kreativ sein. –

+0

Für eine etwas andere Ansicht, siehe auch [Was ist eine Referenzvariable in C++?] (Http://stackoverflow.com/questions/2765999/what-is-a-reference-variable-in-c) –

Antwort

-1

Eine Referenz ist nur ein Zeiger mit einer dünnen Schicht von Make-up.

Denken Sie an eine Referenz als einen gewöhnlichen Zeiger, mit der Ausnahme, dass jedes Mal, wenn Sie auf eine Referenz beziehen, den Dereferenzierungsoperator, *, wird automatisch verwendet:

int a; 

int &aref=a; 

Dies ist wirklich das gleiche wie:

int a; 

int *aref= &a; 

Abgesehen davon, dass jedes Mal, aref verwiesen wird, die * Operator angewendet wird, so

void some_function_call(int); 

some_function_call(aref); 

Was wirklich passiert hier, mit aref ein Zeiger zu sein:

some_function_call(*aref); 

Wenn Sie C++ Programm nehmen sind, und ersetzen Sie zu initialisieren jede Referenzdeklaration mit einer Zeigerdeklaration (und einen & Adressoperator auf es), und dann einen * Operator überall die Referenz, jetzt ein Zeiger, verwendet wird, wird das Endergebnis logisch gleich sein.

+0

_ @ Sam_ Seufz! Wir müssen nicht für jede Frage eine Antwort schreiben: P –

+0

Wie würden Sie 'const int & x = 42;' in eine Zeigerdeklaration umschreiben? – cpplearner

+0

Wer möchte etwas so albern machen? –

Verwandte Themen