我再次研究 C++,注意到当在类成员方法或 main()
中声明为指针时,关于数组初始化的奇怪行为功能。
int * p = new int[20];
我希望发生的是指针将保持未初始化的随机值,就像它们对
int arr[20];
但是它们都归零了。这是怎么回事?
最佳答案
即使它们为零(这是松散的说法,见下文),它们也没有被初始化。
实际上,您无法判断它们是否为零,因为如果您读取这些值,就会遇到未定义的行为。您无法读取未初始化的变量。
要对数组进行值初始化,您可以这样做:
int * p = new int[20]();
// ^^
// note parenthesis
但除此之外没有,它没有被初始化。
关于c++ - 初始化指向 int 数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173472/