如何在 Red/System 中创建指向数组中第一个元素的指针?
将地址分配给指针没有问题:
my-integer: 1
ptr: declare pointer! [integer!]
ptr: :my-integer
数组已声明。
buffer: as int-ptr! allocate 1009 * size? integer!
但是。
ptr: :buffer
这不是办法,也不是。
ptr: ::buffer
ptr: :buffer/1
ptr: :(buffer/1)
有人知道怎么做吗?
问候,
阿诺德
最佳答案
由于 ptr 和 buffer 都是指向整数数据的指针,因此您只需将其中一个分配给另一个即可:
ptr: buffer
:variable
语法仅需要获取 Java 中所谓的“原始”类型的地址。这相当于 byte!、integer!、float!、float32!和逻辑!在当前版本的 Red/System 中。如果没有前导 :
,编译器将提供存储在变量中的值。
所有其他类型,例如 c 字符串!和结构! (因此别名!)实际上是指针。因此编译器在引用它们时提供它们的值,即内存地址。
当您引用一个单词时,Red/System 编译器会提供存储在其中的值:
print i ;; will print the value stored in i
当您使用 set-word(名称后附加 :
的变量)时,编译器会在其中存储一个值:
i: 1 ;; stores 1 in variable i
当您使用 get-word(在名称开头插入 :
的变量)时,编译器会提供该变量的地址。
int-ptr: :i ;; stores the address of i in int-ptr
关于arrays - 红色/系统中指向 'array' 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194962/