微机原理 变量分配内存空间及怎样解决未初始化的局部变量问题

局部变量定义后必须初始化,即赋值才能使用(它没有默认值)。 而类变量定义后可以不初始化因为它有默认值。 类变量(实例变量):定义在类中方法体之外。成员变量前面加 static 修饰符 局部变量:定义在...

1.全局变量数组未初始化则其默認值全为0

2.局部变量数组未初始化,则其默认值为-(垃圾值)

全局变量、静态变量处于数据区未初始化,默认值为0
局部变量处于堆棧区,其数值是随机的即当时内存中的值。

// test.cpp: 定义控制台应用程序的入口点
 

在C中初始化一个全局变量  和  在一個函数中初始化一个局部变量 如果初始化时不赋值默认值都为0吗?

不是的只有全局变量初始化时的默认值为0,而局部变量默认值是不確定的所以,局部变量在使用之前一定要先赋值如果基于一个不确定的值做后续运算必然会引入bug。

下面看一个错误的例子: 编译运行の后打印结果为:

结果正确吗显然第二个结果是错误的!result[1]应该等于5050。

原因就是因为add_range函数中局部变量isum没有初始化,所以具有不确定的值当add_range(1,10)执行完毕之后,紧接着执行add_range(1,100)所有i和sum正好取了上次调用的值,所以这次执行的时候i=11sum=55。i会在for语句执行的时候重新赋值所以不会出错,但sum的初始值就是从55开始累加的所以最后结果会比正确值多出55来。因此局部变量的初始化一定要注意!

我要回帖

更多关于 怎样解决未初始化的局部变量 的文章

 

随机推荐