Zeigerbasics
-
Kann mir mal bitte jemand gaanz genau erklaeren, was in dem folgenden Code passiert...
#include <iostream> using namespace std; struct X { int func() {return 5;} }; int main() { X* x; cout << x->func() << endl; return 0; }
Warum kann ich denn schon mit der Variablen x arbeiten, die ja vom Typ X* ist?
Sie zeigt doch noch nirgendwo hin, z.B. auf &yBis jetzt habe ich nur in Tutorials immer so was gelesen:[cpp]#include <iostream>
using namespace std;struct X
{
int func() {return 5;}
};int main()
{
X* x;
X y;
x=&y;cout << x->func() << endl;
return 0;
}[/cpp]
-
Das ist auch nicht richtig. Bei mir gibt das (VS.NET):
"Run-Time Check Failure #3 - The variable 'x' is being used without being defined."
Ansonsten: Falsches Forum.
-
Also bei mir frisst der g++-3.4 das ohne zu meckern...
g++-3.4 -o test -Wall -W test.cpp
-
Beginner schrieb:
Also bei mir frisst der g++-3.4 das ohne zu meckern...
g++-3.4 -o test -Wall -W test.cpp
Klar, ist ja auch kein syntaktischer Fehler.
-
Dieser Thread wurde von Moderator/in AJ aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ganz einfach undefiniertes Verhalten, d.h. aus der Sicht des Standards, mit der wir uns hier befassen, ist die Frage schon erledigt, es kann alles passiern. Bei einer sehr gebräuchlichen Implementationsvariante (
) kommt es in der Praxis allerdings dazu, dass die Memberfunktion letztlich wie eine normale Funktion behandelt wird, der ein zusätzliches Argument -- der Zeiger auf ihre zugeordnete Instanz in Form von this -- übergeben wird. Diese dereferenziert diesen Zeiger allerdings nicht, so dass es doch irgendwie funktioniert. Man kann sich aber gewaltig in die Nesseln setzen, wenn man sich auf solche "Wahrheiten" verläßt...
-
bashar schrieb:
dereferenziert diesen Zeiger allerdings nicht
Warum nicht? Wer sagt, dass die nicht auf membervariablen zugreifen will?
-
Die Funktion und die Klasse kann im obersten Posting nachgelesen werden.
-
Achso...