问问题描述
答精选答案

有些编程语言不一定需要程序员初始化变量(比如VB),因为如果你不初始化,那么编译器/解释器会自动帮助你初始化(会将变量数据类型的默认初始值赋给变量)。
即使是C语言这种,也有不需要初始化的变量,例如静态变量static,规则如下:对于原生数据类型,以对应类型的零值进行初始化;对于类中的静态对象,由其默认的构造函数来进行初始化。
另外全局变量,还有用calloc()函数分配到的空间,都会被自动初始化。所以题主你理解的变量必须要初始化其实只是由于在C或者类似语言中,局部的自动变量和寄存器变量是从堆、栈或者寄存器上临时分配(重复使用),我们不知道之前的代码究竟对这个空间做过什么,所以值会是随机的。
除非编译器设为调试模式(debug),此时编译器往往会自动对局部变量进行初始化(0xcc),这也是有时调试模式编译运行成功但是发行模式(release)编译运行出错的原因。
全局变量和静态变量之所以不需要初始化是因为,作用范围为全局的变量(包括全局和静态)会从全局变量区分配空间,而由于RAM存储器特性,这些变量会被自动清零。
本文来自作者[小小凹乐意]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/2486350.html
评论列表(4条)
我是公众科技网的签约作者“小小凹乐意”!
希望本篇文章《变量的初始化》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:有些编程语言不一定需要程序员初始化变量(比如VB),因为如果你不初始化,那么编译器/解释器会自动帮助你初始化(会将变量数据类型的默认初始值赋给变量)。即使是C语言这种,也有不需要初始化的变量,例如静态变量static,规则如下:对于原生数据类型,以对应类型的零值进行初始化;对于类中的静态对象,由其默认的构造函数来进行初始化。另外全局变量,还有用calloc()函数分配到的空间,都会被自动初始化。所以题主你理解的变量必须要初始化其实只是由于在C或者类似语言中,局部的自动变量和寄存器变量是从堆、栈或者寄存器上