不确定数组的值

jac*_*lau 3 c++ arrays

我可以问别人看我的概念是否正确吗?

假设我定义了两个数组:int integer[4];char characters[4];

  1. 如果我没有初始化数组元素并且数组是在函数内定义的,那么数组元素的值将是不确定的(即未知/随机).

  2. 如果我没有初始化数组元素并且数组是在全局范围内定义的,那么int数组元素的值0和char数组元素的值将是'\0'.

我的观念是否正确?谢谢!

Sin*_*all 6

根据§8.5/ 12

如果没有为对象指定初始化程序,则默认初始化该对象; 如果未执行初始化,则具有自动或动态存储持续时间的对象具有不确定的值.[注意:具有静态或线程存储持续时间的对象是零初始化的,请参见3.6.2. - 结束说明]

全局变量和静态变量都属于注释,因此它们将被初始化为零.根据§8.5/ 6,

零初始化T类型的对象或引用意味着:<...>

  • 如果T是标量类型(3.9),则将对象初始化为通过将整数0(零)转换为T而获得的值;

  • 如果T是数组类型,则每个元素都是零初始化的;

所以,你的假设是正确的.