Hallo,
wie der Titel schon sagt: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable? Ein "*"-Variable ist nach meinem Verständnis ein Zeiger auf eine Speicheraddresse (sofern zugewiesen), bzw. dafür vorgesehen. Das gleiche funktioniert aber auch mit einer ".i"-Variable. Dient das nur zur Unterscheidung des Verwendungszwecks oder habe ich da was übersehen?
Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Re: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Teilweise ...
Ein Integer (i) ist immer so groß wie ein Register. Also so groß wie ein Pointer (*).
Aber einen Pointer (*) kann man eine Struktur zuweisen, was bei einem Integer nicht geht.
Ausserdem ist es auch besser zu unterscheiden ob es sich um einen Wert (i) oder ob es sich um ein Zeiger (*) handelt
Ein Integer (i) ist immer so groß wie ein Register. Also so groß wie ein Pointer (*).
Aber einen Pointer (*) kann man eine Struktur zuweisen, was bei einem Integer nicht geht.
Ausserdem ist es auch besser zu unterscheiden ob es sich um einen Wert (i) oder ob es sich um ein Zeiger (*) handelt
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Verstehe ich nicht ganz:
...geht doch.
Code: Alles auswählen
Define MeineDaten.POINT
MeineDaten\x=1
MeineDaten\y=2
Debug MeineDaten\x
Debug MeineDaten\y
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Du hast hier ja auch eine statische strukturierte Variable definiert. Das ist kein Pointer. Das kann man mit Pointern machen:
Code: Alles auswählen
Structure Vector2D
x.d
y.d
EndStructure
Define v1.Vector2D
v1\x = 1
v1\y = 2
Define v2.Vector2D
v2\x = 3
v2\y = 4
Define *p.Vector2D
; Weise dem Pointer die Adresse von v1 zu und gib die Daten an der Adresse aus, indem du sie mit der Struktur Vector2D interpretierst
*p = @v1
Debug *p\x
Debug *p\y
; Jetzt das selbe mit v2
*p = @v2
Debug *p\x
Debug *p\y
; Und jetzt ändere was in *p
*p\x = 300
*p\y = 400
; Aber gib nun die Werte von v2 aus
Debug v2\x
Debug v2\y
Re: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Einen unterschied im Wertebereich gibt es (aktuell) nicht. Ich sage aktuell, weil sich das durchaus ändern kann.
Als es früher noch keine Integer als Typ gab, sondern nur Long und x86 Prozessoren, dachte viele auch, dass es kein Unterschied macht ob man Adresse.l oder *Adresse schreibt. Nun, im Zuge von x64, habe diese Leute Probleme alle Bugs auszumerzen.
Einen unterscheid in der Syntax gibt es hingegen schon.
Das * gehört z.B. mit zum Variable-Namen, die normale Typenbezeichnung nach dem Punkt nicht.
Einem Pointer kann wie von mk-soft geschrieben eine beliebige Struktur zugewiesen werden, in der gelesen und geschrieben werden kann ohne die Peek() und Poke() Befehle zu nutzen.
Als es früher noch keine Integer als Typ gab, sondern nur Long und x86 Prozessoren, dachte viele auch, dass es kein Unterschied macht ob man Adresse.l oder *Adresse schreibt. Nun, im Zuge von x64, habe diese Leute Probleme alle Bugs auszumerzen.
Einen unterscheid in der Syntax gibt es hingegen schon.
Das * gehört z.B. mit zum Variable-Namen, die normale Typenbezeichnung nach dem Punkt nicht.
Einem Pointer kann wie von mk-soft geschrieben eine beliebige Struktur zugewiesen werden, in der gelesen und geschrieben werden kann ohne die Peek() und Poke() Befehle zu nutzen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Besteht ein wirklicher Unterschied zwischen Variable.i und *Variable?
Ah verstehe, glaube ich. Vielen Dank euch.
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD