问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

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

发布网友 发布时间: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;若为局部变量,会得到一个随机值;建议使用时对其初始化。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
梦到儿子穿我的毛衣是怎么回事 大一就入党是不是太快了? 大一新生可以入党么? 大学生入党需要什么条件呢 如何查看钉钉上班记录? 手机刷机,出现绿色机器人,还有红色三角,里面有个感叹号! 然后要怎么... 大众点评全国家装家居店铺POI采集184万家-2024年5月底 九十平米的房子简装修需要多少钱简装时要注意什么 九十平米的房子装修多少钱装修房子有哪些花费项目 是什么意思用英语怎么说Well i don\'t do MSN cam or any other cam b... C++,下列程序求解释,关于变量没有初始化以及默认... c语言中float类型变量的默认初始值是什么? C语言中: 如果一个变量为全局变量的话,一般系统... 在c语言中没有对一个变量赋值它的值是否自动赋0 下列叙述正确的是系统默认@变量的初值为零 plc输入点的类型有哪些? C语言中定义int变量,默认值是多少 C语言中未初始化的变量的值是0么 在C语言中,为什么定义变量的时候总是初始化为0呢... C语言全局变量未初始化时的值是随机的还是0 C语言中的全局变量的默认值 如何计算固伤伤害 梦幻西游固伤武器怎么算伤害比如109无底洞需要高伤... 梦幻西游固伤秒的8修和10修能差多少 LR的伤害,敏捷,强度之间都怎么换算的 梦幻西游武器怎么算伤害? 梦幻敏捷加固伤公式 无底洞一点固伤等于多少武器伤害 地府60点伤害和31点敏捷选哪个? 蔡文静《掌中之物》又来袭,玻璃渣里的糖真的好吃吗? 全局变量初始化几次 c++全局变量在什么时候初始化 c++:全局变量不管什么类型初始值都是0是吧? C++中值初始化和默认初始化有什么区别? int是不是只有在全局变量时才自动初始化为0?其它内... 静态变量初值为什么为0?静态变量如果不给它赋值,... 怎样让全局变量自动初始化为0 怎样将全局变量数组重新置为零 int是不是只有在全局变量时才自动初始化为0?其它... 少有人走的路—向地图外行军读后感 少有人走的路保持平衡读后感? 暑假要求读一本人文类书籍,要做读书笔记,有什么... 读未选择的路有感300字! 读书的心得体会 有人说“读书不是唯一的出路,却是最好走的路”,这... 读书心得600字 关于读书心得 经常有人说读万卷书不如行万里路,行万里路会给你... 15篇名著读书心得 两篇读书心得
  • 焦点

最新推荐

猜你喜欢

热门推荐