arrays - 红色/系统中指向 'array' 的指针

标签 arrays pointers red red-system

如何在 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/

相关文章:

string - Rebol/RED 解析。将解析后的字符串中的 ASCII 代码保存到变量中?

encoding - 访问错误: invalid UTF-8 encoding ${FFD8FFE0}

javascript - 如何在 JavaScript 中将数组元素指定为对象中的属性值?

c++ - strdup 指针版本需要一个临时指针

c - '*' token 之前解析错误

c - 关于C指针

list - 使用 Red 语言从多个列表中获取值到一个列表

jquery - 通过 Ajax POST 传递数组时没有数据

c# - 有没有更好的方法将二维数组写入二进制文件?

java - 如何在BIRT中将字符串拆分为字符数组?