Problem mit Referenzen
-
Nur das es in AnsiC keine Referenzen gibt.
-
Braunstein schrieb:
Nur das es in AnsiC keine Referenzen gibt.
C kennt keine 'reference types' im sinne von C#, Java o.ä. in C nimmt man eben pointer dafür. der wichtigste unterschied ist ja nur, dass bei referenzen mit verweisen auf objekte gearbeitet wird, während bei 'by value' das objekt selber kopiert wird.
int a; ... f (a); // call 'by value', das objekt selbst wird kopiert g (&a); // call 'by reference', es wird ein verweis auf das objekt übergeben
-
Und bei g() übergibst du ein Objekt "by value" vom Typ T*.
-
Tim schrieb:
Und bei g() übergibst du ein Objekt "by value" vom Typ T*.
ja, das ist aber technisch bedingt. die referenz bzw. der pointer wird 'bei value' übergeben. es ändert aber nichts an der referenzsemantik, die dahinter steckt.
-
Es geht hier auch mehr um Terminologie als um Semantik.
Edit: Aber ich erwarte nicht (mehr), dass du das verstehst.
-
Tim schrieb:
Es geht hier auch mehr um Terminologie als um Semantik.
ist doch kein problem:
ISO/IEC 9899:1999 schrieb:
A pointer type describes an object whose value
provides a reference to an entity of the referenced type.
-
Also findest du auch das "call by reference" von dem du hier immer redest?
-
Tim schrieb:
Also findest du auch das "call by reference" von dem du hier immer redest?
wo? im C-standard? nein, aber wieso sollte 'call by reference' dort ausdrücklich erwähnt sein? wenn referenzsemantik in C mit pointern ermöglicht wird, sollten damit auch 'calls' gehen. ich weiss gar nicht, warum du damit solche schwierigleiten hast, oder meinst du den 'referenzbegriff' haben pointerlose programmiersprachen für sich gepachtet?
-
Green Heaven schrieb:
Tim schrieb:
Also findest du auch das "call by reference" von dem du hier immer redest?
wo? im C-standard? nein, aber wieso sollte 'call by reference' dort ausdrücklich erwähnt sein? wenn referenzsemantik in C mit pointern ermöglicht wird, sollten damit auch 'calls' gehen. ich weiss gar nicht, warum du damit solche schwierigleiten hast, oder meinst du den 'referenzbegriff' haben pointerlose programmiersprachen für sich gepachtet?
Es geht aber darum die Technik zu begreifen, die dahinder steht. C kennt nunmal kein "by reference", in C wird alles kopiert.
Was sind eigentlich "pointerlose programmiersprachen"? Kann man sich eine Sprache ohne Pointer ueberhaupt noch vorstellen?
-
DEvent schrieb:
Es geht aber darum die Technik zu begreifen, die dahinder steht. C kennt nunmal kein "by reference", in C wird alles kopiert.
in anderen programmiersprachen nicht? sind referenzen nicht überall bloss pseudo-pointer?
DEvent schrieb:
Kann man sich eine Sprache ohne Pointer ueberhaupt noch vorstellen?
es gibt viele, die ohne auskommen.