全局变量:

如果我们在应用程序一个单元中的interface关键字和implementation关键字之间的区域,定义一个全局变量,假如这个单元在别的地方被引用,那么这个单元的全 局变量能够在别的地方被访问到,当然我们也可以在应用程序一个单元中的implementation关键字的后面定义全局变量,不过此时在这里定义的全局变量只能在本 单元中被访问到,也就是说它是这个单元私有的,在别的单元中将不能被访问到。全局变量在应用程序的数据区分配内存,它存在于可执行模块(EXE或DLL等)的 文件影像内部,在程序编译期就被决定,直到应用程序结束,全局变量所占用的内存地址是固定不变的。全局的非指针类型,声明后自动分配内存,并初始化值。

全局的指针类型,声明后不自动分配内存,值为nil。

局部变量:

我们可以在函数或方法(包含过程)中定义局部变量,局部变量在应用程序的栈上进行分配,并且总是在栈上分配!局部变量的内存是在函数或方法(包含过程) 被调用时分配,在函数或方法(包含过程)调用结束时其内存被释放。由于函数或方法(包含过程)在每次被调用时,栈顶可能发生变化,因此局部变量的内存地 址是变化的,局部的非指针类型,声明后自动分配内存,不初始化值,值不确定(取决与别的程序对这块内存的操作)。局部的指针类型,声明后不自动分配内存,

但会随机指向一个地址,所以地址不为nil

注:

这里我们不提倡用全局变量,而尽可能的用局部变量,假如必须用到全局变量,我们可以将这个全局变量在类(比如TForm)的成员区域声明或定义。

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

初始化,再使用!

DELPHI 全局变量和局部变量的区别的更多相关文章

  1. Python中的全局变量与局部变量的区别

    全局变量与局部变量两者的本质区别就是在于作用域 用通俗的话来理解的话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地 ...

  2. 总结javascript中的全局变量和局部变量的区别以及声明函数和调用函数的区别

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...

  3. python函数的 全局变量与局部变量

    一.函数的全局变量 1.什么是全局变量 顶着头开始写,没有任何缩进,在py文件的任何位置都能调用 #!/usr/bin/env python # _*_ coding:utf8 _*_ name=&q ...

  4. js中全局变量和局部变量以及变量声明提升

    javascript中全局变量和局部变量的区别 转载前端小99 发布于2018-04-23 15:31:35 阅读数 2102  收藏 展开 [javascript] view plain copy ...

  5. C++中的全局变量、普通局部变量和静态局部变量的区别

    在C++中,我们经常难以说清楚全局变量.局部变量和静态局部变量的区别.本博客从变量存储特性和标识符作用域两个角度区分这三个变量. 首先,我们来看看C++程序的内存区域是如何分配的. 从上图,我们可以看 ...

  6. C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别

    全局变量.局部变量.静态全局变量.静态局部变量的区别 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作 ...

  7. IOS 成员变量,全局变量,局部变量定义,static与extern的区别

    IOS 成员变量,全局变量,局部变量定义,static与extern的区别 1,先说定义 1)成员变量定义:生存与该类的生命周期,变量存活周期跟你定义的该类实体对象一样:作用域是整个实体对象:可以在h ...

  8. static全局变量与普通全局变量的区别,static局部变量与普通局部变量的区别,static函数与普通函数的区别

    static全局变量与普通全局变量的区别 static全局变量和普通全局变量的存储方式没有不同,如果它们都已经初始化,那么存放在进程的数据段中,否则存放在bss段.这两者的不同点在于作用域不同,当一个 ...

  9. DELPHI之全局变量和局部变量

    http://www.cnblogs.com/Stwo/archive/2011/07/11/2102816.html DELPHI之全局变量和局部变量 全局变量: 如果我们在应用程序一个单元中的in ...

随机推荐

  1. 多线程12-ManualResetEventSlim

        ));             ));             ));             t1.Start();             t2.Start();              ...

  2. java_第一年_JavaWeb(15)

    Filter过滤器,Servlet API 中提供了一个Filter接口,用于实现用户在访问某个目标资源前对其进行拦截: 拦截原理:web服务器通过Filter接口调用doFilter方法,会传递一个 ...

  3. uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署。

    WSGI 协议 WSGI:是一种协议规范,起到规范参数的作用,就像告诉公路一样,规定超车靠右行,速度不低于90km/h,等.但这一切都是对双方进行沟通,比如,重庆到武汉这条高速路,这儿重庆和武汉就各为 ...

  4. 不定参数(rest 参数 ...)

    不定参数 如何实现不定参数 使用过 underscore.js 的人,肯定都使用过以下几个方法: _.without(array, *values) //返回一个删除所有values值后的array副 ...

  5. 51nod - 1586 - 约数和 - 打表 - 思维

    https://www.51nod.com/Challenge/Problem.html#problemId=1586 一眼看过去居然一点思路都没有的,一言不合就打表,打贡献表. #include & ...

  6. 分布式唯一ID生成器

    在应用程序中,经常需要全局唯一的ID作为数据库主键.如何生成全局唯一ID? 首先,需要确定全局唯一ID是整型还是字符串?如果是字符串,那么现有的UUID就完全满足需求,不需要额外的工作.缺点是字符串作 ...

  7. 【问题解决方案】git clone失败的分析和解决

    参考链接 git_clone资源获取失败解决 使用Git clone代码失败的解决方法 [Git] Clone failed 克隆失败的解决方法 问题描述: 无论是git clone还是pull,均失 ...

  8. python编程基础之简单购物车

    #good文件夹内容[ ['Iphone7', 5800], ['Coffee', 30], ['疙瘩汤', 10], ['Python Book', 99], ['Bike', 199], ['Vi ...

  9. JavaScript 的执行机制

    一.关于javascript javascript是一门单线程语言,在最新的HTML5中提出了Web Worker,但javascript是单线程这一核心仍未改变. 为什么js是单线程的语言?因为最初 ...

  10. [web 安全] php随机数安全问题

    and() 和 mt_rand() 产生随机数srand() 和 mt_srand() 播种随机数种子(seed)使用: <?php srand(123);//播种随机数种子 for($i=0; ...