• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

C Problem

Mitglied seit
26.06.2001
Beiträge
147
Reaktionen
0
Jo moin

Hab da nen Verständnisproblem bzgl Pointern

also gegeben sind 2 Functions

Nr1:

void change_cbv(int iA, int iB)
{
int iBuffer;
iBuffer = iA;
iA = iB;
iB = iBuffer;

return;
}

Nr2

void change_cbr(int* ipY, int* ipZ)
{
int iBuffer;
iBuffer = *ipY;
*ipY = *ipZ;
*ipZ = iBuffer;

return;
}

was dat ding macht is mir klar, nur gibts nen Unterschied in der Wertübergabe zwischen Nr1 und Nr2? Werden da die Werte oder die Addressen getauscht beim 2.?

Achja in die 2. Fkt werden natürlich Adressen gecastet
 

Bronzegraf

Guest
Es werden die Werte getauscht. * ist der Dereferenzierungsoperator.
 

ROOT

Technik/Software Forum, Casino Port Zion
Mitglied seit
17.11.2002
Beiträge
7.052
Reaktionen
38
Ort
MS
Nr1. ist mal hart sinnlos da iA / iB lokal sind und nicht referenziert.

Nr2. tauscht die Werte in den Zeigern, richtig.

Adressentausch würde so funktionieren:

void change_cba( int * & ip1, int * & ip2)
{
int *buf = ip1;
ip1 = ip2;
ip2 = buf;
return;
}

(alternativ doppelzeiger, falls du pures C machen willst)
 

The_Company

Guest
Ich wollte mich gerade beschweren, dass das da C++ ist und nicht C. :o

Und Malli sollte sich noch mal ganz genau durchlesen, was ein Pointer ist und was der tut. *Ich koennte hier meine Version bringen, aber ich wette, es gibt Websites die koennen das besser). Wenn er benatworten kann, was der Unterschied zwischen *x und x[0] ist, dann hat er es drauf.
 
Oben