什麼是塊結構?


塊是一條包含其自身區域性資料宣告的語句。塊的概念起源於 ALGOL。塊結構語言允許具有可調整長度的陣列。塊的主要特徵是它們的括號結構(ALGOL 中使用的 begin 和 end),它們可以在其中定義其資料。在 'C' 語言中,塊的語法如下:

{
   declaration statements;
}

其中花括號限定了塊。塊的特徵是其巢狀結構。分隔符標記塊的開始和結束。在 'C' 語言中,花括號 { } 充當分隔符,而 ALGOL 使用 begin 和 end。分隔符確保塊彼此獨立或巢狀在另一個塊中。巢狀屬性有時被稱為塊結構。

最緊密巢狀規則給出了宣告的作用域:

  • 塊 B 中宣告的作用域包含 B。
  • 如果名稱 x 用於塊 B 但未在 B 中宣告,則在封閉塊 B 中使用 x 的宣告位於封閉塊 B' 中 x 的宣告的作用域內,這樣
    • B' 有 x 的宣告,並且
    • B' 比任何其他包含 x 宣告的塊更緊密地巢狀在 B 周圍。

考慮一個 C 程式:

使用堆疊執行上述塊結構程式可以如下所示:

像 ALGOL 和 PL/I 這樣的塊結構語言允許可調整陣列,即長度可變的陣列。因此,它無法在啟用記錄之間儲存不規則大小的陣列。它可以在啟用記錄的一個角或固定大小資料之上分配靈活或可變陣列。指向這些可調整陣列的指標將儲存在啟用記錄的固定位置。

塊結構程式由巢狀過程組成。有時,過程引用未在其自身中宣告的資料,即非區域性資料。非區域性資料在其啟用記錄中不可用。一個啟用記錄的非區域性資料將存在於另一個過程的啟用記錄中。

有兩種方法可以訪問過程的非區域性資料,如下所示:

  • **靜態連結** - 在這種方法中,一個稱為靜態連結的指標附加到每個過程,該指標指向程式中物理上圍繞該過程的最頂層啟用記錄。因此,任何過程的非區域性資料引用都可以透過指標的下降鏈來找出所有靜態封閉過程。

  • **顯示** - 顯示是一個指標陣列,用於加快對非區域性資料的訪問。

更新於: 2021-11-08

7K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.