Da beide ptr und Puffer sind Zeiger Daten auf ganzzahlige Sie einfach einen zum anderen zuweisen:
ptr: buffer
Die :variable
Syntax wird nur das bekommen erforderlich Adresse von sogenannten "primitiven" Typen in Java. Das entspricht Byte !, Integer !, Float !, Float32! und Logik! in der aktuellen Version von Red/System. Ohne den führenden :
liefert der Compiler den in der Variablen gespeicherten Wert.
Alle anderen Typen wie C-String! und struct! (und damit Alias!) sind tatsächlich Zeiger. Der Compiler liefert also ihren Wert, wenn sie referenziert sind, was eine Speicheradresse ist.
Wenn Sie ein Wort verweisen, bietet das Red/System-Compiler den Wert darin gespeichert:
print i ;; will print the value stored in i
Wenn Sie eine Set-Wort (eine Variable mit einem :
an den Namen angehängt), der Compiler ein Wert darin speichert:
i: 1 ;; stores 1 in variable i
Wenn Sie ein get-Wort (eine Variable mit einem am Anfang des Namens eingefügt :
) verwenden, der Compiler die Adresse der variablen zur Verfügung stellt.
int-ptr: :i ;; stores the address of i in int-ptr
Beachten Sie, dass ':' ist kein * erhalten "Operator" *. Es ist überhaupt kein Operator. Daher können Sie keine Doppelpunkte kombinieren, um einen get-of-a-get zu erhalten (':: buffer'), noch können Sie ein Leerzeichen setzen (': buffer'). Dies führt dazu, dass Rebol und Red den anderen Sprachen so unähnlich sind. Ein führendes ":" ist ein Signal, das bedeutet, dass das Symbol, das du dekorierst, als GET-WORD "gewürzt" wird. Trotz der Verfügbarkeit dieser "Aromen" (mehr als Lisp hat es bei weitem) ist es immer noch etwas, was symbolisch verarbeitet wird. Rebol/Red verarbeitet sie auf eine Weise, die wie eine "normale" Sprache aussieht, aber deine eigenen Dialekte können es anders machen! – HostileFork