Besseres Verstehen zu Zeigern
-
Ich glaube mich mit Zeigern ziemlich gut auszukennen und das Kapitell ziemlich durchblickt zu haben. Eine Frage hätte ich dann aber doch noch, nämlich:
Normal:
int zahl = 20; int *pointer = &zahl;geht nicht:
int zahl = 20; int zahl2; &zahl2 = &zahl;Meine Frage ist nun warum kann man in C++ die Adresse einer Variable oder Pointers (Adresse des Pointers nicht die Adresse auf die er zeigt) nicht ändern? Hat das was mit dem Compiler oder der Übersichtlichkeit zu tun oder was ist hier der Grund?
-
Was du hier versuchst ist, zwei Variablen auf dieselben 4 Bytes im Speicher zu quetschen. Da reicht der Platz einfach nicht, egal wie sehr sie zusammenrücken!

Übrigens, was dich interessieren könnte, sind Zeiger auf Zeiger (char **p). Du Kannst ja mal danach gucken. Was du da versuchst, geht damit aber auch nicht.
-
Meine Frage ist nun warum kann man in C++ die Adresse einer Variable oder Pointers (Adresse des Pointers nicht die Adresse auf die er zeigt) nicht ändern? Hat das was mit dem Compiler oder der Übersichtlichkeit zu tun oder was ist hier der Grund?
Weil das technischer Blödsinn ist. Überleg mal auch ein Zeiger ist schlussentlich auch nur ein Bereich im RAM. Das heisst der Zeiger befindet sich auf einem festen Platz. Jetzt kommst du und willst einem festen Ort im RAM einen anderen zuweisen?
Das ist schon rein logisch nicht möglich, weil du versuchst eine etwas zu ändern, was sich selbst beschreibt.

Das ist in etwa so, als ob du geografische Koordinaten ändern willst. Das geht einfach nicht, da es ansonsten ja andere Koordinaten sind.Schwierig das zu erklären. Ich hoffe, dass du durch intensives denken selbst darauf kommst.

-
drakon schrieb:
Schwierig das zu erklären. Ich hoffe, dass du durch intensives denken selbst darauf kommst.

Muttu denken!

-
reuabreliz schrieb:
geht nicht:
int zahl = 20; int zahl2; &zahl2 = &zahl;Die Adresse einer Variable ist selbst keine Variable, man kann ihr folglich keinen Wert zuweisen.
Das heist, sie darf nicht auf der linken Seite einer Zuweisung stehen.
