为什么全局变量无须初始化,局部变量必须初始化
发布网友
发布时间:2022-04-20 01:23
我来回答
共2个回答
热心网友
时间:2023-07-06 18:02
这个说法本身就不对。变量需要不需要初始化是根据需要来进行的。全局变量有时也需要初始化,而局部变量其实大部分时间都没有初始化。不要把赋初值与初始化混淆了:初始化是由编译器做的,形成可执行文件后,那些变量的值就在软件文件中放着,执行程序时直接使用了;而赋初值是由C/C++代码实现的,程序开始执行后才给变量赋的值。只是全局变量如果不显式初始化,那么编译时由编译器自动初始化为0,而编译器对局部变量是否有值视而不见,所以在程序开始执行前局部变量的“值”是机器垃圾。因此,局部变量在获得初值前若当右值使用就要出问题!局部变量获得初值有两个途径:一是初始化,如int x=3;就是在声明x的类型时同时初始化为3——x==3这个值在编译时就被编译器确定了,程序启动后不再执行int x=3;这种操作;二是赋初值,如int x;x=3;,int x;在编译时执行,只声明了变量类型,值是垃圾,x=3;是C/C++语句,每次启动程序都要执行,将变量x赋值为3。所以,说“局部变量其实大部分时间都没有初始化”,就是指我们创建函数时往往只写int a,b,c,x,y,z;而并不给每个变量都初始化一个确定的值,而是在使用前给它们赋初值,如紧接着写scanf("%d%d%d",&a,&b,&c);或for(x=0;x<10;x++){...}(其中x=0是给x赋初值)等。
热心网友
时间:2023-07-06 18:02
全局变量会默认地初始化为0 而局部变量不会
为什么全局变量无须初始化,局部变量必须初始化
全局变量是放在全局存储区中, 程序初始化时会把未初始化的全局变量置为0, 局部变量存放在栈中, 栈内存是重复使用, 如果不初始化, 变量的内容是随机的.貌似没有必须初始化这一说, 只是未初始化的局部变量如果直接使用的时候会报一个错, 使用前对它赋一个值就行了, 当然你也可以说这就是初始化,...
C++中局部变量一定要初始化吗,为什么?
可以不初始化,但是在后续的过程中,一旦需要使用这个变量,一定要记得先初始化,所以在声明时就初始化是个好习惯,也是值得提倡的做法
JAVA中的变量为什么要初始化呢?
为了给变量分配空间。不分配空间无法对变量操作。在java中全局变量不需要初始化,局部变量必须初始化。
c++中为什么局部变量一定要初始化不然就会报错,而全局变量可以不用初...
局部变量不是一定要初始化(不初始化也不会报错),只是如果不初始化,其值是不确定的。如果全局变量不初始化,其值由编译器默认设置为0。
C语言中“局部变量要初始化,全局变量不要初始化”,是这样的吗
不是的。全局变量还是局部变量都可以初始化或者不初始化化 ,语法没有对这有要求。但是到实际情况是根据你写的代码来分析。你写的int total = 0;在你不初始化报错的原因是,int total;total是没有赋值的一个变量,那他的值就是分配内存中残留的值,属于错误的数据。你后面用到total+=num[j].一...
c 语言 为什么变量使用之前要初始化
小伙伴你好,初始化变量并不是必须的,但是在c语言中未初始化的变量是其数据类型允许范围内的任意值(静态变量除外),为了防止运算中出错,一般建议定义变量后,立即初始化。这是一种预防出错的机制。请采纳,谢谢。
...一般系统会初始化为0; 如为局部变量,会得到一个随机值;
如在定义局部变量时不赋值的话,则对静态变量来说,编译时自动赋初值0或空字符。而对自动变量来说,如果不赋值,它的值是一个不确定的值。
全局变量和局部变量有什么区别
全局变量一旦在程序中被声明,其存储空间在整个程序的生命周期内都存在,除非显式释放。如果未初始化,系统会自动赋予它们默认值。然而,这种便利性也带来内存开销增加和降低函数独立性的缺点。相比之下,局部变量的作用域仅限于定义它们的函数,当函数执行结束时,局部变量就会消失,节省了内存。程序中的...
为什么C语言全局数组越界后显示的是0,而局部数组越界之后显示的是未知的...
我觉得这个跟变量是一样的原理全局变量一般不用人为去初始化编译器会初始化为0;而局部变量则需要初始化一个值不然会出现一个随机值;主要去看两者存放在哪个地方及其作用域和生命周期
...函数内局部变量内如果一个变量不对它进行初始化,是不是输出就会变成...
这要看你变量的作用域,若为全局变量,一般系统会初始化为0;若为局部变量,会得到一个随机值;建议使用时对其初始化。