Dav*_*lák 0 c++ arrays int pointers initialization
我再一次使用C++,并注意到在类成员方法内或main()函数内部声明为指针时数组初始化的奇怪行为.
int * p = new int[20];
Run Code Online (Sandbox Code Playgroud)
我期望发生的是,指针将保持未初始化的随机值,就像它们一样
int arr[20];
Run Code Online (Sandbox Code Playgroud)
但相反,他们都归零了.到底是怎么回事?
即使它们为零(这是松散的,见下文),它们也没有被初始化.
实际上,你不能说它们是零,因为如果你读取了这些值,就会遇到未定义的行为.您无法读取未初始化的变量.
要使数组值初始化,您可以执行以下操作:
int * p = new int[20]();
// ^^
// note parenthesis
Run Code Online (Sandbox Code Playgroud)
但否则没有,它没有初始化.