在 Turbo C 2.0 環境中,每個函數都是獨立的代碼模塊。函數內部的代碼與數據默認不對外部可見,除非通過函數調用或全局變量進行交互。這意味著無法使用 goto 語句跨函數跳轉,也不能在函數內部嵌套定義另一個函數。所有函數處於同一作用域層級,且具有全局可見性——即不同文件中的函數無需額外聲明即可相互調用。
Turbo C 2.0 允許在復合語句(花括號包圍的代碼塊)中聲明變量,其作用域僅限於該花括號內。程序執行超出花括號時,這些變量即銷毀。內層變量可與外層同名而互不干擾,這體現了塊級作用域的遮蔽機制。
#include <stdio.h>
int i = 10; // 全局變量
int main() {
int i = 1; // main 函數局部變量
printf("%d\t", i); // 輸出 1
{ // 內層塊 1
int i = 2; // 塊級局部變量
printf("%d\t", i); // 輸出 2
{ // 內層塊 2
extern int i; // 聲明引用全局變量
i += 1; // 修改全局 i (10→11)
printf("%d\t", i); // 輸出 11
}
printf("%d\t", ++i); // 修改並輸出塊 1 的 i (2→3)
}
printf("%d\n", ++i); // 修改並輸出 main 的 i (1→2)
return 0;
}
運行結果: 1 2 11 3 2
1:main 的局部變量 i2:第一個內層塊的局部變量 i11:通過 extern 訪問並修改的全局變量 i3:第一個內層塊的 i 自增後的值2:main 函數的 i 自增後的值此例清晰展示了 C 語言的作用域鏈機制:內層作用域可訪問外層變量,但同名變量會遮蔽外層同名實體;extern 關鍵字可打破遮蔽,直接操作全局變量。