http://www.cnblogs.com/Stwo/archive/2011/07/11/2102816.html

DELPHI之全局变量和局部变量

全局变量:

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

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

局部变量:

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

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

注:

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

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

初始化,再使用!

最新文章

  1. HTML 5 音频
  2. CentOS7 配置阿里云yum源
  3. verilog断言(SVA:systemverlog assertion)语法 ---- 转载
  4. The import java.util cannot be resolved The import javax.servlet cannot be resolved
  5. [POJ1050]To the Max
  6. 制作支持UEFI PC的Server2008 R2系统安装U盘
  7. Mac键位设定和Xcode快捷键(自己总结,持续更新)
  8. jQuery uploadify-v3.1 批量上传
  9. spring beans的写入工具——spring-beans-writer
  10. MEF依赖注入调试小技巧!
  11. Oracle常见操作汇总(转)
  12. java.lang.IllegalArgumentException: Can't convert argument: null
  13. win8设置自动关机
  14. Flask 系列之 HelloWorld
  15. 微服务扩展新途径:Messaging
  16. 1062.Talent and Virtue
  17. VUE 实现复制内容到剪贴板功能
  18. Spring 基础概念——DI、IOC(一)
  19. [转载]linux 文件改名,移动
  20. 微信开发(一)SAE环境搭建

热门文章

  1. levelDB SSTable-1
  2. [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
  3. 让网站动起来!12款优秀的 jQuery 动画
  4. Fiddler用法整理
  5. Django之模板(T)
  6. IDEA中Java目录结构
  7. 什么是python??
  8. 帝国CMS自定义页面的添加与目录式链接的处理
  9. 启动ZOOKEEPER之后能查看到进程存在但是查不到状态,是因为。。。
  10. pgtclsh -- PostgreSQL TCLshell 客户端