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)
谁知道怎么做?
问候,
阿诺德
由于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)