Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

jazzdee

Lebende Foren Legende

Dabei seit: 12.11.2002

Beiträge: 1 886

 

1 Zum Seitenanfang

Samstag, 22. April 2006, 13:19

Eine Fragen zu C++

Ich habe einige Fragen zu C++ und hoffe, dass mir hier geholfen werden kann.

Frage 1:

Zitat

int zahl = 1;
int *pzahl;

pzahl = &zahl;

ist das selbe wie

Zitat

int zahl = 1;
int *pzahl = &zahl;

???

Frage 2
Was ist der Unterschied zwischen einer Referenz und einem Pointer? Ich erhalte in beiden Fällen die selbe Adresse auf den Speicherplatz.

Zitat

int zahl = 1;
int *pzahl = &zahl;
int &rzahl = zahl;

cout << pzahl; // --> 0x0012ff78
cout << &rzahl; // --> 0x0012ff78

????

Das waren erstmal meine ersten Fragen, kann aber gut sein, dass noch ein paar folgen werden^^

Gruß
Jazzdee
 

silence

König

Dabei seit: 28.02.2003

Beiträge: 981

 

2 Zum Seitenanfang

Samstag, 22. April 2006, 13:34

RE: Eine Fragen zu C++

Zitat

Original von jazzdee
Frage 1:

Zitat

int zahl = 1;
int *pzahl;

pzahl = &zahl;

ist das selbe wie

Zitat

int zahl = 1;
int *pzahl = &zahl;

???

Ja, ist es

Zitat

Original von jazzdee
Frage 2
Was ist der Unterschied zwischen einer Referenz und einem Pointer? Ich erhalte in beiden Fällen die selbe Adresse auf den Speicherplatz.

Zitat

int zahl = 1;
int *pzahl = &zahl;
int &rzahl = zahl;

cout << pzahl; // --> 0x0012ff78
cout << &rzahl; // --> 0x0012ff78

????

Eine Referenz ist was anderes (google mal nach Referenz in Verbindung mit Funktionen), was du hier nutzt ist der Adressoperator '&', der gibt die Adresse eines Objektes zurück.

Beispiel für Referenzen:

Quellcode

1
2
3
4
5
6
7
8
9
void test(int &myRef)
{
   myRef = 5;
}

int temp = 10;
std::cout << temp << std::endl; //gibt 10 aus
myRef(temp);
std::cout << temp << std::endl; //gibt 5 aus

Mit den ganzen Operatoren kann man schnell durcheinanderkommen, da viele doppelt belegt sind mit Funktionen :rolleyes:

Ich hoffe ich verwechsle da jetzt nix, hab gestern bischle über den Durst getrunken und hab nen riesen Kater :P
Sollte aber stimmen ;-)
Aktuell nutze ich: Windows, Linux, MacOS X, Solaris...weil die Welt nicht nur S/W ist!
Blog

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »silence« (22. April 2006, 13:36)

 

jazzdee

Lebende Foren Legende

Dabei seit: 12.11.2002

Beiträge: 1 886

 

3 Zum Seitenanfang

Sonntag, 23. April 2006, 19:53

Ich glaube ich habe die Sache mit der Referenz geschnallt.

Ich habe eine Variable int zahl = 1;. Wenn ich nun auf diese Variable eine Referenz anlege (int &rzahl = &zahl) erzeuge ich quasi eine Kopie von int zahl. Von nun an habe ich 2 Variablen (zahl und rzahl). Beide Variablen haben den selben Wert. Das besondere: Wenn ich die "Kopie" (die Referenz rzahl) einen anderen Wert zuordne, ändert sich auch der Wert von zahl.
Ich habe quasi 2 Variablen, die auf ein und den selben Speicherplatz zugreifen.

Ist das so korrekt?
 

silence

König

Dabei seit: 28.02.2003

Beiträge: 981

 

4 Zum Seitenanfang

Sonntag, 23. April 2006, 23:06

Ja, so in etwa ist das.
Referenzen spielen eigentlich nur eine Rolle in Funktionen/Methoden, es gibt 3 Arten wie man diese aufrufen kann:

Call by Value (Kopie der Variablen wird übergeben)
Call by Address (Kopie eines Zeigers wird übergeben, wird oft mit Referenzen verwechselt)
Call by Reference (Referenz wird übergeben, ist die schnellste Art eine Funktion aufzurufen)

Deshalb ziehe ich immer wenns geht ein

Quellcode

1
void fkt(int const &input)

einen

Quellcode

1
void fkt(int input)

Man muss nur bei temporären Objekten aufpassen, und ThreadSafe isses auch net :rolleyes:

gibt auch Leutchen die es schaffen, eine Referenz auf einen Zeiger zu basteln:

Quellcode

1
void fkt(int *&input)


Ach das könnte man ins unendliche ausdehnen o_O
Aktuell nutze ich: Windows, Linux, MacOS X, Solaris...weil die Welt nicht nur S/W ist!
Blog