可以将 Cray 指针赋值如下:
设置为绝对地址
示例:q = 0
赋值给整数变量、加或减表达式或从整数变量、加或减表达式中赋值
示例:p = q + 100
Cray 指针不是整数。不能将它们赋值给实数变量。
LOC 函数(非标准)可用于定义 Cray 指针。
示例:p = LOC( x )
示例:按上述方式使用 Cray 指针。
SUBROUTINE sub ( n ) COMMON pool(100000) INTEGER blk(128), word64 REAL a(1000), b(n), c(100000-n-1000) POINTER ( pblk, blk ), (ia, a ), ( ib, b ), & ( ic, c ), ( address, word64 ) DATA address / 64 / pblk = 0 ia = LOC( pool ) ib = ia + 4000 ic = ib + n ... |
有关以上示例的说明:
word64 引用绝对地址 64 的内容
blk 是占用内存前 128 个字的数组
a 是块公用区中长度为 1000 的数组
b 跟在 a 的后面,其长度为 n
c 跟在 b 的后面
a、b 和 c 与 pool 相关联
word64 与 blk(17) 相同,因为 Cray 指针是字节地址,而且 blk 的每个整数元素都是 4 字节长