红色/系统中指向"数组"的指针

iAr*_*old 5 arrays pointers red red-system

如何在Red/System中创建指向数组中第一个元素的指针?

为指针分配地址没有问题:

my-integer: 1
ptr: declare pointer! [integer!]
ptr: :my-integer
Run Code Online (Sandbox Code Playgroud)

数组已声明.

buffer: as int-ptr! allocate 1009 * size? integer!
Run Code Online (Sandbox Code Playgroud)

但.

ptr: :buffer 
Run Code Online (Sandbox Code Playgroud)

不是方式,也不是.

ptr: ::buffer
ptr: :buffer/1
ptr: :(buffer/1)
Run Code Online (Sandbox Code Playgroud)

谁知道怎么做?

问候,

阿诺德

Pet*_*ood 6

由于ptr和buffer都是指向整数数据的指针,因此您只需将一个指定给另一个:

ptr: buffer
Run Code Online (Sandbox Code Playgroud)

:variable语法只需要得到一个什么样将被称为"原始"类型Java中的地址.这相当于byte!,integer!,float!,float32!和逻辑!在当前版本的Red/System中.如果没有前导:,编译器将提供存储在变量中的值.

所有其他类型,如c-string!和结构!(因此别名!)实际上是指针.因此编译器在引用时提供它们的值,这是一个内存地址.

引用单词时,Red/System编译器提供存储在其中的值:

print i             ;; will print the value stored in i
Run Code Online (Sandbox Code Playgroud)

当您使用set-word(:附加名称的变量)时,编译器会在其中存储一个值:

i: 1                ;; stores 1 in variable i
Run Code Online (Sandbox Code Playgroud)

当您使用get-word(:在名称的开头插入一个变量)时,编译器会提供变量的地址.

int-ptr: :i         ;; stores the address of i in int-ptr
Run Code Online (Sandbox Code Playgroud)