Ja. Die *Notation besagt, dass das, was auf dem Stapel übergeben wird, ein Zeiger ist, dh eine Adresse von etwas. Das &sagt, es ist eine Referenz. Der Effekt ist ähnlich, aber nicht identisch:
Nehmen wir zwei Fälle:
void examP(int* ip);
void examR(int& i);
int i;
Wenn ich anrufe examP , schreibe ich
examP(&i);
Dies nimmt die Adresse des Elements und übergibt sie an den Stapel. Wenn ich anrufeexamR ,
examR(i);
Ich brauche es nicht; jetzt übergibt der Compiler "irgendwie" eine Referenz - was praktisch bedeutet, dass er die Adresse von erhält und übergibt i. Auf der Codeseite also
void examP(int* ip){
*ip += 1;
}
Ich muss sicherstellen, dass der Zeiger dereferenziert wird. ip += 1macht etwas ganz anderes.
void examR(int& i){
i += 1;
}
aktualisiert immer den Wert von i.
Weitere Informationen finden Sie unter "Call by Reference" im Vergleich zu "Call by Value". Der &Begriff gibt C ++ Aufruf als Referenz.