B
Guest_te schrieb:
Hi, komplett neu in C++ und hatte vorher mit Pointern nie was zu tun.
Dann schau dir erstmal normale Pointer an, die auf Daten zeigen.
void *tid = (void*) 123;
Ich definier einen Void Pointer
( Muss ich angeben damit der Compiler weiß, wie viele Bytes an der Startadresse überhaupt zum Pointer dazugehören )
Das ergibt für mich keinen Sinn. Vielleicht kannst du es nochmal mit anderen Worten sagen? Die naheliegendste Deutung ist jedenfalls falsch: ein void-Zeiger zeichnet sich ja gerade dadurch aus, dass es unbekannt ist, worauf er zeigt. Ein void-Zeiger zeigt nicht auf ein Objekt, sondern lediglich auf eine Adresse. Ohne Information, "wieviele Bytes ... dazugehören".
Aber dieses (void*) 123 versteh ich nicht.
Das ist auch relativ sinnlos. Der Zeiger wird auf die Adresse 123 gesetzt. Normalerweise weiß man nicht, was an der Adresse 123 steht, also kann man mit dem Pointer nichts anfangen. In der Regel initialisiert man Zeiger entweder mit einem Nullpointer (0 oder NULL), mit einem anderen Zeiger oder mit der Adresse eines Objektes.
void *tid = 123
Würde ich den Inhalt des Pointervariablen verändern
Nein, welcher Variablen denn? Die wird hier gerade erst deklariert und initialisiert. Dieser Code bedeutet theoretisch das gleiche wie der oben, funktioniert allerdings nicht, weil 123 (ein int) nicht einfach so nach void* umgewandelt werden kann. Dazu ist immer eine explizite Umwandlung nötig.
void &tid = 0x123
Das geht schon gleich gar nicht, es gibt keine void-Referenzen.
Übrigens geht es hier um C++/CLI, nicht um C++.