Referenz auf Zeiger möglich als Funktionsparameter?
-
Falls ja, wie schreibt man das richtig?
Ich möchte eine Funktion schreiben, die den Zeiger (der ein Funktionsparamter ist) auf einen anderen Speicherbereich setzt.Geht das so:
void ZeigerVerändern(int*& Zeiger_des_Aufrufers){ ... Zeiger_des_Aufrufers = NULL; }oder so:
void ZeigerVerändern(int** Zeiger_des_Aufrufers) /* Der Aufrufer muss die Adresse des Zeigers übergeben?*/ ... Zeiger_des_Aufrufers = NULL; }Ich bin mir nicht sicher, ob diese Funktionen auch wirklich die Zeigervariable, die der Aufrufer in seiner Funktion definiert hat, verändert, oder einfach nur den Aktuellen Parameter der Funktion ZeigerVerändern, also ohne Auswirkungen auf die Zeigervariable des Aufrufers?
Oder schreibt man gar so:
void ZeigerVerändern(int&* Zeiger_des_Aufrufers){...}Weil eigentlich ist ja die Referenz bereits ein Zeiger. Das ist alles sehr verwirrend!
-
Hi, benutz einfach ein typedef dann kommste auch nicht so durcheinander ...
Beispiel:
typedef void (*fptr)(); void func1() { std::cout<<"func1"<<std::endl; } void func2() { std::cout<<"func2"<<std::endl; } void aendere(fptr& b) { b = func2; } int main(void) { fptr a = func1; a(); aendere(a); a(); std::cin.get(); return 0; }
-
Möglichkeit 1 und 2 sind legal (wobei du im zweiten Fall den Parameter dereferenzieren solltest:
*Zeiger_des_Aufrufers = NULL;), Möglichkeit 3 ist verboten (das wäre ein Zeiger auf eine Referenz).@Freak: Was hat dein Beitrag denn mit der Frage zu tun?
-
CStoll schrieb:
@Freak: Was hat dein Beitrag denn mit der Frage zu tun?
Gar nichts ... (Merk ich mal so gerade) Sry, habe irgendwie gedacht er wolle was anderes
