2016 - 2024

感恩一路有你

java强制类型转换 在c语言中,局部变量初始化是什么意思,要怎么初始化?

浏览量:2993 时间:2021-03-12 08:42:18 作者:admin

在c语言中,局部变量初始化是什么意思,要怎么初始化?

C语言按范围一般分为全局变量和局部变量。一旦声明了全局变量,默认情况下它将被初始化为适当的类型0,而当声明了局部变量时,它的值是不可预测的。因此,对于后续程序的正常使用,最好是将其初始化得恰到好处,否则有时会造成灾难性的后果!第二个问题,例如:intmain(){Chara;//未初始化。以后可以初始化。Char*P=&A;//已初始化。指针P给定了变量a的地址,char*q;//未初始化。太危险了!因为指针q是一个局部变量,此时的值是不确定的,它可能指向系统的重要数据。一旦在初始化此变量之前遇到类似于以下的语句,就很危险:q=&A;}

错误。变量是否需要初始化是按需完成的。有时需要初始化全局变量,但大多数情况下局部变量没有初始化。不要混淆初始值赋值和初始化:初始化是由编译器完成的。可执行文件形成后,这些变量的值放在软件文件中,在执行程序时直接使用;而初始值的赋值是用C/C代码实现的,变量的值只有在程序开始执行后才赋值。只有当全局变量没有显式初始化时,编译器才会在编译时自动将其初始化为0,并且编译器不会看到局部变量是否有值,因此在程序开始执行之前,局部变量的“值”是机器垃圾。因此,局部变量在初始值之前的正确使用时间将是一个问题!有两种方法可以获得局部变量的初始值:一种是初始化,例如intx=3,当声明X的类型时,它被初始化为3--X==3。这个值在编译时由编译器决定,程序启动后不会执行intx=3的操作;

另一个是赋一个初始值,比如intxx=3,编译时执行,只声明变量类型,值是垃圾,x=3是C/C语句,每次程序启动时,变量x被分配给3。因此,说“局部变量大部分时间不初始化”意味着当我们创建一个函数时,我们只写Ta、B、C、x、y、Z,而不是用某个值初始化每个变量,而是在使用之前给它们赋值,比如scanf(%d%d%d”、&A、&B、&AmpC)或for(x=0x<10x){…}(其中x=0)是将初始值赋给x),等等。

为什么全局变量无须初始化,局部变量必须初始化?

当局部变量未初始化并且在第一次赋值之前引用了该变量的值时,将报告使用未初始化局部变量的警告或错误。

局部变量以

type var=init的形式定义,其含义是定义一个类型为var的局部变量,并将其初始化为init value。

其中,=init值部分可以省略。此时,VaR的初始值将是一个随机值,由编译器或运行环境决定。

如果初始值未知的VaR是由

type VaR

定义的,并且其值在赋值前被引用,例如打印、参与计算等,则VaR的值是不确定的。从某种意义上说,此时输出什么值对程序的结果没有意义。

因此,如果发生这种情况,编译器将发出警告或错误,以提醒存在这种不确定因素。

对于大多数编译器来说,这只是一个警报,而不是一个错误。

java强制类型转换 局部变量一定要初始化吗 接口

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。