Forum: Compiler & IDEs Funktionen und Pointer


von Dave (Gast)


Lesenswert?

Hallo,

kann ich einer Funktion einen Zeiger übergeben und die Adresse des 
Zeigers in eine weitere Funktion weiterreichen?

Z.b. so
1
void Funktion1( int *test){
2
3
   *test=*test +1;
4
}
5
6
void Funktion2(int *i){
7
8
   Funktion1(&i);
9
}

von Peter II (Gast)


Lesenswert?

Dave schrieb:
> kann ich einer Funktion einen Zeiger übergeben und die Adresse des
> Zeigers in eine weitere Funktion weiterreichen?

klar geht das, aber nicht so wie du es gemacht hast. du hat aus einem 
Zeiger ein Zeiger auf einen Zeiger gemacht.
1
void Funktion2(int *i){
2
3
   Funktion1(i);
4
}

von Dave (Gast)


Lesenswert?

Darf ich davon ausgehen das ich dann auch Funktion1 anpassen muss?
1
void Funktion1( int test){
2
*test = *test +1;
3
}
4
5
void Funktion2(int *i){
6
7
   Funktion1(i);
8
}

Ich übergebe der Funktion2 eine Zeiger (also die Adresse des 
Speicherplatzes). Aus der möchte ich ja die Adresse der Variable i in 
eine weitere Funktion übergeben. Also wenn ich i an Funktion1 übergebe, 
steckt nicht der Wert von i, sondern die Adresse dahinter? Das heißt 
wenn ich in Funktion1 test hochzähle, dann muss ich trotzdem das * 
davormachen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dave schrieb:
> Darf ich davon ausgehen das ich dann auch Funktion1 anpassen muss?

Nein.

> void Funktion1( int test){
> *test = *test +1;
> }

test ist hier kein Pointer mehr.

von Rolf M. (rmagnus)


Lesenswert?

Dave schrieb:
> Hallo,
>
> kann ich einer Funktion einen Zeiger übergeben und die Adresse des
> Zeigers in eine weitere Funktion weiterreichen?

Du meinst vermutlich den Wert des Zeigers, nicht seine Adresse.

Dave schrieb:
> Ich übergebe der Funktion2 eine Zeiger (also die Adresse des
> Speicherplatzes). Aus der möchte ich ja die Adresse der Variable i in
> eine weitere Funktion übergeben.

Nicht die Adresse von i, sondern den Wert.

> Also wenn ich i an Funktion1 übergebe, steckt nicht der Wert von i,
> sondern die Adresse dahinter?

i ist ein Zeiger, d.h. sein Wert ist eine Adresse, aber das ist deshalb 
nicht die Adresse von i.

> Das heißt wenn ich in Funktion1 test hochzähle, dann muss ich trotzdem
> das * davormachen?

Ja, aber der Parameter muß trotzdem ein Zeiger bleiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.