c++ - 初始化指向 int 数组的指针

标签 c++ arrays pointers initialization int

我再次研究 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/

相关文章:

c - C 中的文本到数组

c# - 在 C# 应用程序中调用带有 void* 参数的 C++ 函数

c++ - Doxygen:剥离顶级命名空间

c++ - C++中的 vector 重复打印输入

c++ - 这是糟糕的 RAII 设计吗?

php - 检查所有数组值是否存在于另一个数组值中

c - 读取文本文件,将每一行分成单独的数组并在 C 中排序

c - 直接声明并赋值给 C 指针

c - 使用 memcpy 后无法打印指针

c++ - 将聚合初始化为类成员