CREATE和VARIABLE之间的区别

时间:2014-12-28 21:54:40

标签: forth gforth

两个单词CREATE和VARIABLE有什么区别?

例如,在此代码中:

VARIABLE MYARRAY 2 CELLS ALLOT
170 340 220 MYARRAY ! MYARRAY 1 CELLS + ! MYARRAY 2 CELLS + !

CREATE MYARRAY 220 , 340 , 170 ,

在这两种情况下,结果在内存中是相同的。这样对吗?我什么时候应该用一个代替另一个?为什么?

1 个答案:

答案 0 :(得分:2)

对,VARIABLE分配一个内存单元。此外,标准程序可能不会假设它可以 在变量后添加数据,请参阅Contiguous regions

CREATE本身不会分配任何内存,而是启动一个可以扩展的连续区域。而且,它是标准程序与DOES>结合使用的唯一单词。

差异可能主要是风格(除非您使用DOES>或非常关注标准)。读者更清楚VARIABLE是一个简单的变量。 CREATE可以是任何类型的数据结构。

如果您想要初始化变量,可以使用VARIABLE FOO BAR FOO !CREATE FOO BAR ,。我没有看到任何一种替代品在很大程度上优先于另一种。