
- Pascal 教程
- Pascal - 首頁
- Pascal - 概述
- Pascal - 環境設定
- Pascal - 程式結構
- Pascal - 基本語法
- Pascal - 資料型別
- Pascal - 變數型別
- Pascal - 常量
- Pascal - 運算子
- Pascal - 決策制定
- Pascal - 迴圈
- Pascal - 函式
- Pascal - 過程
- Pascal - 變數作用域
- Pascal - 字串
- Pascal - 布林值
- Pascal - 陣列
- Pascal - 指標
- Pascal - 記錄
- Pascal - 變體
- Pascal - 集合
- Pascal - 檔案處理
- Pascal - 記憶體
- Pascal - 單元
- Pascal - 日期和時間
- Pascal - 物件
- Pascal - 類
- Pascal 有用資源
- Pascal - 快速指南
- Pascal - 有用資源
- Pascal - 討論
Pascal - 變數作用域
在任何程式語言中,作用域是指程式中一個定義的變數可以存在並且可以訪問的區域,超出該區域則無法訪問該變數。在 Pascal 程式語言中,可以在三個地方宣告變數:
在子程式或塊內,稱為區域性變數
在所有子程式之外,稱為全域性變數
在子程式引數的定義中,稱為形式引數
讓我們解釋一下什麼是區域性變數和全域性變數以及形式引數。
區域性變數
在子程式或程式碼塊內部宣告的變數稱為區域性變數。只有在該子程式或程式碼塊內部的語句才能使用它們。區域性變數對外部的子程式是未知的。以下是用區域性變數的示例。這裡,所有變數a、b和c都是名為exLocal的程式的區域性變數。
program exLocal; var a, b, c: integer; begin (* actual initialization *) a := 10; b := 20; c := a + b; writeln('value of a = ', a , ' b = ', b, ' and c = ', c); end.
當以上程式碼被編譯和執行時,會產生以下結果:
value of a = 10 b = 20 c = 30
現在,讓我們稍微擴充套件一下程式,建立一個名為 display 的過程,該過程將擁有自己的變數集a、b和c,並從程式exLocal中顯示它們的值。
program exLocal; var a, b, c: integer; procedure display; var a, b, c: integer; begin (* local variables *) a := 10; b := 20; c := a + b; writeln('Winthin the procedure display'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); end; begin a:= 100; b:= 200; c:= a + b; writeln('Winthin the program exlocal'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); display(); end.
當以上程式碼被編譯和執行時,會產生以下結果:
Within the program exlocal value of a = 100 b = 200 c = 300 Within the procedure display value of a = 10 b = 20 c = 30
全域性變數
全域性變數是在函式外部定義的,通常位於程式的頂部。全域性變數將在程式的整個生命週期內保持其值,並且可以在為程式定義的任何函式內部訪問它們。
任何函式都可以訪問全域性變數。也就是說,全域性變數在其聲明後即可在整個程式中使用。以下是用全域性和區域性變數的示例:
program exGlobal; var a, b, c: integer; procedure display; var x, y, z: integer; begin (* local variables *) x := 10; y := 20; z := x + y; (*global variables *) a := 30; b:= 40; c:= a + b; writeln('Winthin the procedure display'); writeln(' Displaying the global variables a, b, and c'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); writeln('Displaying the local variables x, y, and z'); writeln('value of x = ', x , ' y = ', y, ' and z = ', z); end; begin a:= 100; b:= 200; c:= 300; writeln('Winthin the program exlocal'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); display(); end.
當以上程式碼被編譯和執行時,會產生以下結果:
Within the program exlocal value of a = 100 b = 200 c = 300 Within the procedure display Displaying the global variables a, b, and c value of a = 30 b = 40 c = 70 Displaying the local variables x, y, and z value of x = 10 y = 20 z = 30
請注意,過程 display 可以訪問變數 a、b 和 c,它們相對於 display 以及它自己的區域性變數來說是全域性變數。程式可以為區域性變數和全域性變數使用相同的名稱,但函式內部區域性變數的值將優先。
讓我們稍微修改一下前面的例子,現在過程 display 的區域性變數與a、b、c具有相同的名稱:
program exGlobal; var a, b, c: integer; procedure display; var a, b, c: integer; begin (* local variables *) a := 10; b := 20; c := a + b; writeln('Winthin the procedure display'); writeln(' Displaying the global variables a, b, and c'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); writeln('Displaying the local variables a, b, and c'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); end; begin a:= 100; b:= 200; c:= 300; writeln('Winthin the program exlocal'); writeln('value of a = ', a , ' b = ', b, ' and c = ', c); display(); end.
當以上程式碼被編譯和執行時,會產生以下結果:
Within the program exlocal value of a = 100 b = 200 c = 300 Within the procedure display Displaying the global variables a, b, and c value of a = 10 b = 20 c = 30 Displaying the local variables a, b, and c value of a = 10 b = 20 c = 30
廣告