6

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)

誰でもこれを行う方法を知っていますか?

よろしく、

アーノルド

4

1 に答える 1

6

ptr と buffer は両方とも整数データへのポインターであるため、単純に一方を他方に割り当てます。

ptr: buffer

この:variable構文は、Java で「プリミティブ」型と呼ばれるもののアドレスを取得するためにのみ必要です。これは、byte!、integer!、float!、float32! に相当します。そしてロジック!Red/System の現在のバージョンで。先頭に がない:場合、コンパイラは変数に格納されている値を提供します。

c-stringなどの他のすべてのタイプ!そして構造!(したがってエイリアス!) は実際にはポインターです。そのため、コンパイラはそれらが参照されるときにそれらの値を提供します。これはメモリアドレスです。

単語を参照すると、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
于 2013-06-20T09:08:20.517 に答える