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-dimensions —
lower-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用法。