gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:19:18 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com