delphi的变量怎样在声明时初始化?

delphi的变量怎样在声明时初始化?,第1张

这种方法是正确的,即i:integer=0;
但是在声明时初始化的方法只适用于全局变量,这点在Delphi的代码标准文档里可以找到。
[4) 变量
(1) 局部变量
局部变量用于过程内部,果需要的话,应当在过程的入口处立即初始化变量。局部的AnsiString 类型的变量自动被初始化为空字符串,局部的接口和dispinterface类型的变量自动被初始化为nil,局部的Variant和 OleVariant类型的变量自动被初始化为Unassigned。
(2) 全局变量
一般不鼓励使用全局变量。不过,有时候需要用到。即使如此,也应当把全局变量限制在需要的环境中。例如,一个全局变量可能只在单元的实现部分是全局的。
全局数据如果将由许多单元使用,就应移动到一个公用单元里被所有对象使用。全局数据可在声明时直接初始化为一个值。注意,所有全局变量自动进行零初始化,因此,不要将全局变量初始化为诸如0 、nil、或Unassigned等空值。零初始化的全局变量在EXE文件中不占空间。零初始化的数据保存在虚拟的数据段中,而虚拟数据段只在应用程序启动时才分配内存。非零初始化的全局数据则在EXE文件中占空间。]

“局部变量初始化”是指在使用这个局部变量前,要对其进行初始化。这是因为局部变量是从内存堆中分配的,用完就还给内存堆,所以被分配的局部变量并不一定是0,而很可能是其他地方用过的一个值,因此在使用这个变量之前,要对它进行显示初始化。初始化可以用两种方式(假设初值为0):

声明变量是赋值:int val=0;

在使用前赋值:

   int val;

      //其它代码

  val=0;

  //后面开始使用变量val

不是的。全局变量还是局部变量都可以初始化或者不初始化化 ,语法没有对这有要求。
但是到实际情况是根据你写的代码来分析。
你写的int total = 0;
在你不初始化报错的原因是,int total;
total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。
你后面用到total+=num[j]一个错误的数据做 *** 作就报错了,就算不报错,你得到的结果是不正确的。
所以在你这个情况,赋值为0 。并不是语法规定。

按作用域,C语言一般分为全局变量和局部变量。全局变量一旦声明就被默认初始化为适当类型的0,而局部变量被声明的时候其值是不可预料的,所以为了后续程序的正常使用,最好将其认为地初始化,否则有时会有灾难性的后果!
第二个问题,例如:
int main()
{
char a;//没有被初始化,可以在后面初始化,一般没危险性
char p = &a;// 已初始化,指针p被赋予变量a的地址
char q;//没有被初始化,相当危险!因为指针q是局部变量,此时的值是不确定,可能指向系统的重要数据,一旦在此变量被初始化前遇到类似下面的语句,就危险了:
q = &a;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10223392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存