全局變量與局部變量聲明


程序運行時能夠改變的量稱為變量(Variable),變量可分為兩種類型:全局變量和局部變量。

全局變量是指在所有過程和函數之外聲明的變量,全局變量又分為公有(Public)變量和私有(Private)變量。公有變量可以被程序所調用,而私有變量只可以在某個單元中被訪問。

局部變量是指在某個過程或事件中定義的變量。

變量的聲明:

var
  變量名:數據類型;

 

 1 interface
 2 
 3 uses
 4   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 5   Dialogs, StdCtrls;
 6 
 7 type
 8   TForm1 = class(TForm)
 9     Button1: TButton;
10     procedure FormCreate(Sender: TObject);
11   private//在此處聲明的變量為私有變量,它只能在本單元中被調用,而在其他單元無法被調用。
12     { Private declarations }
13     UserName: String;
14     Address: String;
15   public//在此處聲明的變量為公有變量,本單元的事件,過程,函數都可以被調用,如果其他單元文件
16         //引入該單元文件,由於聲明在類的成員區域中,想要訪問此變量就需要先創建類的對象進行訪問。
17     { Public declarations }
18     UserID: Integer;
19   end;
20 
21 var
22   Form1: TForm1;
23   Boos:string; //全局變量,引用本單元即可訪問!
24 
25 implementation
26 
27 uses Unit3;
28 
29 {$R *.dfm}
30 var
31   I: Boolean;//全局變量,為本單元私有,其他單元無法訪問。
32 procedure TForm1.FormCreate(Sender: TObject);
33 var//局部變量
34   InsertTable: String;
35   Users: String;

全局變量:

聲明:以下解釋轉載於https://www.cnblogs.com/Stwo/archive/2011/07/11/2102816.html,個人存檔學習。

如果我們在應用程序一個單元中的interface關鍵字和implementation關鍵字之間的區域,定義一個全局變量,假如這個單元在別的地方被引用,那么這個單元的全
局變量能夠在別的地方被訪問到,當然我們也可以在應用程序一個單元中的implementation關鍵字的后面定義全局變量,不過此時在這里定義的全局變量只能在本
單元中被訪問到,也就是說它是這個單元私有的,在別的單元中將不能被訪問到。全局變量在應用程序的數據區分配內存,它存在於可執行模塊(EXE或DLL等)的
文件影像內部,在程序編譯期就被決定,直到應用程序結束,全局變量所占用的內存地址是固定不變的。全局的非指針類型,聲明后自動分配內存,並初始化值。

全局的指針類型,聲明后不自動分配內存,值為nil。


局部變量:

我們可以在函數或方法(包含過程)中定義局部變量,局部變量在應用程序的棧上進行分配,並且總是在棧上分配!局部變量的內存是在函數或方法(包含過程)
被調用時分配,在函數或方法(包含過程)調用結束時其內存被釋放。由於函數或方法(包含過程)在每次被調用時,棧頂可能發生變化,因此局部變量的內存地
址是變化的,局部的非指針類型,聲明后自動分配內存,不初始化值,值不確定(取決與別的程序對這塊內存的操作)。局部的指針類型,聲明后不自動分配內存,

但會隨機指向一個地址,所以地址不為nil。

這里我們不提倡用全局變量,而盡可能的用局部變量,假如必須用到全局變量,我們可以將這個全局變量在類(比如TForm)的成員區域聲明或定義。

對於局部變量我們則應多加小心,由其是它在定義時不像全局變量一樣被初始化,在程序中不注意則會隱藏巨大的風險,因此在使用局部變量時,一定要先

初始化,再使用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM