鱼C论坛

 找回密码
 立即注册
查看: 1959|回复: 4

[已解决]关于局部变量的问题

[复制链接]
发表于 2023-2-21 08:49:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么局部变量在定义的时候不弄成像全局变量那样初始化为0呢?
最佳答案
2023-2-21 15:25:48
局部变量和全局变量的初始化方式有所不同,主要是由于它们所处的作用域不同。

局部变量定义在函数内部,只在函数内部有效。在程序执行到该局部变量的定义语句时,该变量并没有被分配内存空间,因此初始化为0的操作也就无从谈起。只有在程序运行到该变量的声明语句时,系统才会分配内存空间,此时该变量的值是未知的(即垃圾值)。

相反,全局变量定义在所有函数外部,因此在程序开始执行时,它们就被分配了内存空间。为了保证全局变量的初始值是0,可以在定义时进行初始化操作。

需要注意的是,在定义全局变量时,如果没有显式地对其进行初始化,则编译器会自动将其初始化为0或null值,这取决于变量的类型。但是,为了提高代码的可读性和可维护性,建议在定义全局变量时显式地进行初始化操作。
QQ图片20221223140451.jpg

点评

  发表于 2023-2-21 15:44
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-21 09:18:31 | 显示全部楼层
本帖最后由 两手空空儿 于 2023-2-21 17:55 编辑

有点深,这可能要问开发编译器的大神们了,可能还要问一下计算机的原理
局部变量就是一个临时工,声明之后肯定是要用它的,会给它赋值,清不清0也没必要

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-21 15:25:48 | 显示全部楼层    本楼为最佳答案   
局部变量和全局变量的初始化方式有所不同,主要是由于它们所处的作用域不同。

局部变量定义在函数内部,只在函数内部有效。在程序执行到该局部变量的定义语句时,该变量并没有被分配内存空间,因此初始化为0的操作也就无从谈起。只有在程序运行到该变量的声明语句时,系统才会分配内存空间,此时该变量的值是未知的(即垃圾值)。

相反,全局变量定义在所有函数外部,因此在程序开始执行时,它们就被分配了内存空间。为了保证全局变量的初始值是0,可以在定义时进行初始化操作。

需要注意的是,在定义全局变量时,如果没有显式地对其进行初始化,则编译器会自动将其初始化为0或null值,这取决于变量的类型。但是,为了提高代码的可读性和可维护性,建议在定义全局变量时显式地进行初始化操作。

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-22 16:49:34 | 显示全部楼层
学习一下

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
1613551 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 22:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表