Verständnisfrage...Oo
-
Hi, kurze Frage...
wo ist der genaue unterschied, bzw. wann ist was sinvoll, bei call by pointer und call by referenc?
call by reference:
void func (int& locint) { locint=7; } main () { int i; func(i); }
call by pointer:
void func (int* p) { *p=7; } main() { int i; func (&i); }
THX und cu...
-
es gibt in c keine referenzen und man nennt es in c auch pass by reference, auch wenns keine referenzen gibt, ich höre selten leute die sagen, pass by pointer
-
Dieses Problem bezieht sich auch eher auf c++
Dort gibt es Call by Pointer Referenz hier als Call by Pointer bezeichnet und dann Call by Referenz hier richtig bezeichnet, tut mir leid für den falschen Namen aber ich wollte eigentlich nicht auf die namensgebung aus sein, sondern auf den genauen unterschied, bzw. wann ist was sinvoll anzuwenden und wieso.
Ansonsten kenn ich nur Pass by Pointer Reference
int* add (int a, intb)
{
int result;
result=a+b;
return &result;
}
main ()
{
int* sum;
sum=add (3,8);
cout << *sum << endl;
}Danke für die hilfe, Gruß Cybersushi
-
im grunde genommen gibt es keinen unterschied. die schreibweise ist nur anders. mit referenzen ist es etwas 'sicherer'. es gibt keine referenz auf 'nichts', wohl aber pointer ohne sinnvolle adresse
-
Hallo,
der Unterschied ist, dass es eine natürlichere Syntax hat, d.h. du musst nicht mehr drauf achten, ob du * benutzen musst. Eingebaute Datentypen (wie in deinem Beispiel) übergibt man i.d.R. auch nicht per Referenz, sondern by value.
Referenzen können intern auch durchaus durch Pointer realisiert werden.
-
ah, ok vielen dank.
es ging mir ja auch nur ums grundprinzip, da in mancher literatur steht, dass es das selbe währe, aber woanders auch behauptet wird, dass es nen unterschied gibt. ich habe dieses einfachste beispiel ausgesucht, da es ja nur ums verständnis ging und nicht um es sinvoll einzubauen.