Skip to content

STATIC

来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgStatic 最后更新: 2021-08-31

定义具有静态存储的变量、对象和数组。

语法

Static symbol1 [(array-dimensions)] As DataType [= expression] [, symbol2 ...]

Static As DataType symbol1 [(array-dimensions)] [= expression] [, symbol2 ...]

Static Var symbol1 = expression [, symbol2 = expression, ...]

或(在过程级别):

Sub|Function procedurename ( parameters ) [As DataType] Static
    ...
End Sub|Function

参数

  • symbol — 变量或数组符号名称。
  • array-dimensionslower-bound To upper-bound [, ...]Any [, Any...] 或为空。
  • expression — 常量表达式,或常量表达式的数组。

说明

为变量、对象和数组指定静态存储;它们在程序启动时分配,在退出时释放。对象在定义时构造一次,在程序退出时析构。

声明静态数组时,只能使用数字字面量、常量或枚举值作为下标范围值。静态可变长度数组必须声明为空(无下标范围列表),并在使用前用 Redim 调整大小。

在迭代和递归块中,如循环控制流语句或过程,块的局部静态变量、对象和数组保证在该块的所有实例中占用相同的存储空间。

静态变量只能用常量值初始化:其起始值在程序开始时,在任何代码运行之前设置。

在过程定义级别使用时,Static 为所有局部变量、对象和数组指定静态存储。

仅在模块级变量声明中,修饰符 Shared 可与关键字 Static 一起使用,使模块级静态变量在过程内部可见。

示例

vb
Sub f
    '' times called is initially 0
    Static timesCalled As Integer = 0
    timesCalled += 1
    Print "Number of times called: " & timesCalled
End Sub

'' the static variable in f() retains its value between
'' multiple procedure calls.
f()
f()

输出:

Number of times called: 1
Number of times called: 2

方言差异

  • -lang qb 方言中,变量不能被初始化。

与 QB 的区别

  • QuickBASIC 只允许在过程和 DEF FN 例程中使用 Static 关键字声明变量和数组。
  • Static 在 QuickBASIC DEF FN 例程中强制变量和数组的局部可见性。FreeBASIC 既不支持 DEF FN 例程,也不支持这种 Static 用法。

另请参阅

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系