聲明(VFB教程2-4)

  勇芳 2018-2-16 6173

此處為VisualFreeBasic編程教程(從零開始學或VB進階)的子章節部分,全部目錄點鏈接。

初始化數組,變量和UDT支持變量初始化。

語法

Dim scalar_symbol [AS DataType] = expression 
Dim array_symbol ([lbound TO] ubound ) [AS DataType] => { expression [, ...] }
Dim udt_symbol AS DataType = ( expression [, ...] )

數組,變量和UDT可以在使用Dim聲明時給出一個值,其語法如上所示。請注意初始化不同類型之間的重要區別。標量變量被初始化為正常賦值,使用等號。UDT和數組被賦值一個等號,后跟大于符號(= >))。數組值以逗號分隔的值由大括號括起來,UDT值以括號括起來的逗號分隔值給出。

這些初始化變量的方法可以嵌套在一起,用于復雜的賦值。例如,要初始化一個多維數組:

Dim array(1 To 2, 1 To 5) As Integer => {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}

在此聲明中,最左邊的維度的值作為5索引數組給出。嵌套允許初始化任何維度的數組。

UDT和數組也可以彼此嵌套。例如,以下代碼聲明并初始化UDT數組。

Type mytype
    var1 As Double
    var2 As Integer
    var3 As ZString Ptr
End Type

Dim MyVar(2) As mytype => _
    { _
        (1.0, 1, @"Hello"), _
        (2.0, 2, @"GoodBye") _
    }

對于模塊級,靜態或全局變量,初始化值必須是常量表達式。否則FreeBASIC將報告編譯時錯誤。

變量,對象和數組的可見性和生命周期

變量,對象或數組的存儲類確定內存賦值的時間和位置以及內存何時被銷毀。FreeBASIC有兩個存儲類:automatic 和static .

Automatic 變量,對象和數組生命周期從聲明點開始,并在結束時離開它們聲明的范圍。

Automatic 實體將保證為聲明它們的塊的每個實例提供唯一的存儲。例如,在過程中聲明的automatic 變量將被賦值在不同的地址,并且對于每次調用過程都具有唯一的狀態(值)。

Automatic 使用Dim,ReDim和Var關鍵字定義變量,對象和數組,而不使用Shared說明符。

變量,對象和數組的內存賦值在程序堆棧上。

Automatic 變量,對象和數組沒有鏈接。


Static 變量,對象和數組的生命周期從程序創建開始,并以程序終止結束。

Static 實體被保證具有與聲明它們的塊的每個實例相同的存儲。例如,在一個過程中聲明的static 變量將被賦值在同一個地址上,并且在對該過程的每個調用中保留其狀態(值)。

Static 使用Static關鍵字聲明變量,對象和數組。使用Shared說明符聲明的實體是隱式static .在使用Static說明符聲明的過程中聲明的所有實體也隱式static .

static 變量,對象和數組的內存在可執行文件的.BSS部分或.DATA部分中賦值,如果它們在定義時被初始化。Static 可變長度數組必須聲明為空,具有空的下標范圍列表;它們的元素數據仍然被賦值在可用存儲中(當它們被調整大小時),但是內部數組數據被賦值在可執行文件的.DATA部分中,以允許元素數據在整個程序執行期間持續存在。

Static 變量,對象和數組默認內部鏈接,除非以前聲明使用Extern或Common關鍵字。

變量和對象的可見性和訪問規則

變量的范圍是指其在程序中的可見性。變量在其聲明的范圍之外是不可見的(不能被訪問)。聲明變量的位置和方式決定其范圍。

在FreeBASIC中,有4種范圍:local ,shared ,common 和common shared .這些范圍中的每一個具有不同的可見性規則,具體如下。

本地范圍

在本地作用域中聲明的變量僅在聲明它們的IF,FOR,SCOPE,函數或模塊的最本地實例中可見。

If....
DIM a as long  '只在 IF 內有效
endif

Sub,Function,主體和每個復合語句隱式定義一個新的本地作用域。

Sub ... Function ...
Dim a as long '只在函數或過程里有效

End Sub  End Sunction

使用Dim或ReDim顯式聲明的變量占據其聲明的本地最大塊的范圍。

隱式變量采用最先使用它們的局部最大Scope...End Scope塊的范圍,否則將使用Sub,Function或其主體的范圍。

在本地范圍內,模塊級代碼和功能級代碼之間沒有可見性。此外,在塊決策或循環語句中定義的變量將僅在其尺寸標注的塊內可見。在模塊的本地范圍內聲明的變量在該模塊中的任何函數中都不可見。類似地,在函數內聲明的局部變量在模塊級代碼中也不可見,也不會在模塊中顯示任何其他函數。


在Scope塊內聲明的變量只能被聲明為本地作用域,并且在塊外部不可見。Scope塊,但是,繼承了周圍的范圍,所以在Scope塊之外聲明的局部變量將在(see example program )內部可見。


您可以通過使用Dim語句明確地聲明變量為本地作用域,或者通過簡單地引入變量(see Implicit Declarations )來隱式地聲明變量。

共享范圍

在模塊的共享作用域中聲明的變量對該模塊的模塊和所有功能都是可見的。

Dim Shared a As long   '所有的VFB工程里的模塊過程有效    
Sub..

end Sub

與本地范圍不同,共享范圍使模塊級變量對該模塊的功能可見。換句話說,模塊shares 具有其功能的聲明。


變量只能在模塊級別聲明為共享作用域。也就是說,只有模塊可以共享變量。函數和Scope塊都不能在共享作用域中聲明變量,因此在此處聲明的變量只能是該函數或塊的本地變量。


您可以使用帶有Shared關鍵字的DIM語句來將變量聲明為共享作用域。


共同范圍

所有模塊都可以看到在公共范圍內聲明的變量。(一般情況,在VFB里用不到這個)


使用Common聲明的變量對于具有匹配的Common變量聲明的其他模塊是可見的。聲明的變量名稱必須與模塊之間匹配。

公共共享范圍

在公共共享范圍中聲明的變量對于所有模塊和這些模塊的所有功能都是可見的。


使用Common聲明的變量對于具有匹配的Common變量聲明的其他模塊是可見的。聲明的變量名稱必須與模塊之間匹配。在一個模塊中,Shared聲明修飾符給出了變量模塊范圍,并使該變量對所有子函數和函數都可見。


因國家互聯網安全管理要求,關閉回帖功能。大家需要留言,請使用【勇芳軟件客服】即時聯系勇芳點此打開->>勇芳軟件客服
返回
聯系勇芳
一个人看的www视频播放中文_2012中文字幕电影_亚洲国产成人高清在线观看_中文字幕天堂最新版在线网