Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

11

19.03.2005, 23:31

Na damit kann ich schon mehr anfangen! DANKE!!! bis dann :-D
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Anonymous

unregistriert

12

20.03.2005, 02:21

nur nochmal wegen der frage: pointer oder reference.
es gibt ienen einfachen unterschied: pointer != reference.
ein pointer zeigt auf ein objekt; waehrend eine reference eine art alias fuer eine objekt ist.
references muessen beim erstellen einem objekt zugewiesesn werden, d.h. sie sind immer gueltig ( nicht wie zeiger ). nach der zuweisung kann man die reference keinem anderem objekt zuweisen.
ein pointer ist, wie der name schon sagt, ein zeiger. und man kann all das machen, was man von einem zeiger erwarten wuerde ( zeigerarithmetik, etc. ).
bei der performance gibt es doch einen unterschied. man nimmt immer ein const reference ( keine pointer ihr cler ;) ).
const deshalb, damit der optimierungs part vo compiler zusaetzlich optimieren kann, da wenn er weiss, dass nicht geschrieben wird, sonder nur gelesen, so kann er weitere optimiereungen ( hinsichtlich geschwindigkeit, nicht speicherplatz ... ) durchfueheren.
eine reference, da diese bei zugriff nicht dereferenziert werden muss. und ja, dereferenzieren kostet die cpu kraft. hoffe, dass ich auch was ( konstruktives ) beitragen konnte.

mfg,
google.com

13

20.03.2005, 21:54

Zitat von »"www.google.com"«

nach der zuweisung kann man die reference keinem anderem objekt zuweisen.


das ist mal quatsch.
eine referenz muss initialisiert werden, man kann ihren wert anschließend
aber sehr wohl ändern
guckst du:

C-/C++-Quelltext

1
2
3
4
5
6
int a = 1;
int b = 2;
int &c = a;
cout<<c<<endl;
c = b;
cout<<c<<endl;


z.b. läst sich kompilieren und liefert
1
2

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

14

21.03.2005, 20:14

Zitat von »"0x00000023"«

Zitat von »"www.google.com"«

nach der zuweisung kann man die reference keinem anderem objekt zuweisen.


das ist mal quatsch.
eine referenz muss initialisiert werden, man kann ihren wert anschließend
aber sehr wohl ändern
guckst du:

C-/C++-Quelltext

1
2
3
4
5
6
int a = 1;
int b = 2;
int &c = a;
cout<<c<<endl;
c = b;
cout<<c<<endl;


z.b. läst sich kompilieren und liefert
1
2


Wenn du es sagst ... seltsam, ich habe es zwar noch nie ausprobiert, aber ich zitiere:

[quote="GoTo C++ Programmierung, Addison-Wesley 1495; Seite 113, Zeile 13 (ohne Code)"]
Eine einmal initialisierte Referenz kann nicht mehr geändert werden
[/quote]

Gibt's einen neuen Standard oder was?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

15

21.03.2005, 23:55

ja keine ahnung warums geht.
ich muss zugeben, dass ich es lediglich ausprobiert hab
und es könnte halt sein, dass der vc das beim compilieren
in einen pointer umbaut oder whatever.
allerdings: mit'm gcc gehts auch....

ob nun das buch das du zitierst (habs übrigens auch irgendwo rumliegen)
einen standard benutzt der veraltet ist weis ich nicht.

aber falls ich falsch liege und das nur compiler-bedingt geht, ein sry
an den gast :)

gruß 23h

Anonymous

unregistriert

16

22.03.2005, 17:26

Zitat von »"0x00000023"«

Zitat von »"www.google.com"«

nach der zuweisung kann man die reference keinem anderem objekt zuweisen.


das ist mal quatsch.
eine referenz muss initialisiert werden, man kann ihren wert anschließend
aber sehr wohl ändern
guckst du:

C-/C++-Quelltext

1
2
3
4
5
6
int a = 1;
int b = 2;
int &c = a;
cout<<c<<endl;
c = b;
cout<<c<<endl;


z.b. läst sich kompilieren und liefert
1
2


o_O Natürlich geht das weil c das selbe objekt wie a ist. die zeile

C-/C++-Quelltext

1
c = b;

gibt der Variable c den Wert von b, nicht aber die referenz. Ich bin ziemlich sicher (ohne es zu testen) das die Variable a nun auch 2 ist. Ist also ne ganz normale Wertzuweisung.

17

22.03.2005, 17:40

So, ich habs getestet, und siehe da, a war 2 und Gast lag richtig. Als ich aber

C-/C++-Quelltext

1
&c = b

probiert habe, hat's nicht geklappt, was darauf hindeutet, dass man einer Referenz nur einmal ein Objekt zuweisen kann.

18

22.03.2005, 17:51

k gast, du hattest recht. :)

[edit]

ach....*lachenmuss*
jetzt kapier ich das erst.
^^
okay klar. wie blöd von mir...

hattest natürlich recht.

*grübel* fuck...da stand ich jetzt aber ganz schön aufm schlauch.

lol und sowas studiert info...dumdidu...
[/edit]

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

19

24.03.2005, 08:42

Ich weiß gar nicht was das Problem hier ist.
Eine Referenz auf eine lokale Variable zu setzen macht doch wenig Sinn.
Als Parameter eine Referenz zu nutzen ist hingegen sehr sinnvoll.
Im Prinzip funktioniert eine Referenz nicht anders als ein Pointer.

Quellcode

1
2
int b = 3
int& a = b;

a und b zeigen auf denselben Speicherbereich. Ändert man nun eine der Variablen, dann ändert sich auch die Andere. Das ist ja auch der Vorteil bei Parametern. Die Variable wird nicht kopiert.

Daher ist sowas wie:

Quellcode

1
2
3
int b = 3;
int& a = b;
&a = 5;

total sinnlos. Und wird vom Compiler auch nicht zugelassen.
Da man ja den Speicherbereich nicht durch eine Zahl verändern kann.

Hey, so was muss man wissen, auch wenn man kein Informatik Studium hat ;)

20

24.03.2005, 09:29

na ich sag ja, ich stand irgendwie total aufm schlauch... :)
mein bsp. war natürlich totaler blödsinn.

aber erklär mir mal bitte was du damit sagen willst :

Zitat von »"weigo"«


Daher ist sowas wie:

Quellcode

1
2
3
int b = 3;
int& a = b;
&a = 5;

total sinnlos. Und wird vom Compiler auch nicht zugelassen.
Da man ja den Speicherbereich nicht durch eine Zahl verändern kann.


du kannst natürlich nicht die position von a verlegen.
natürlich kannst du aber direkt auf einen bst. speicherbereich zugreifen
(sofern er allokiert ist):

C-/C++-Quelltext

1
2
3
int *p;
p = 0x12345678;
cout<<*p<<endl;

Werbeanzeige