zoukankan      html  css  js  c++  java
  • 全局变量与局部变量声明

    程序运行时能够改变的量称为变量(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)的成员区域声明或定义。

    对于局部变量我们则应多加小心,由其是它在定义时不像全局变量一样被初始化,在程序中不注意则会隐藏巨大的风险,因此在使用局部变量时,一定要先

    初始化,再使用!

    编程语言无所谓高低级,唯适用罢了。语言结构再天花乱坠,富丽堂皇终不过CPU上的0和1。
  • 相关阅读:
    糖果传递
    流水作业调度(贪心) Johnson算法
    [CQOI2015]任务查询系统
    [CQOI2009]叶子的染色
    P4906 小奔关闹钟
    P1131 [ZJOI2007]时态同步
    P1270 “访问”美术馆
    P1272 重建道路
    [HNOI/AHOI2018]道路
    P1776 宝物筛选_NOI导刊2010提高(02)
  • 原文地址:https://www.cnblogs.com/fansizhe/p/12602686.html
Copyright © 2011-2022 走看看