未初始化的本地自动数组
Uninitialized local automatic array c++
#include <iostream>
using namespace std;
int main()
{
int a[6];
for(int i=0;i<6;i++)
{
cout <<a[i]<<" ";
}
cout << endl;
return 0;
}
我有一段简单的c++代码。数组是在堆栈上创建的,没有初始化。
得到以下输出:0 00 0 1569540800 32767.
我真的不明白最后两个数字是从哪里来的。更具体地说,我不知道a[4]和a[5]中的值是什么。我试着运行了很多次程序。A[4]每次都在变化,而A[5]总是32767。
我还尝试创建一个长度为4和8的未初始化数组。在这些情况下,输出都是0。
我理解数组必须初始化。我在使用c++数组时遇到了这种情况。我只是想更深入地了解内存中发生了什么。
我的环境是clang++在Mac上。
数组a[6]必须初始化。默认情况下,这将是未初始化的。因此,它的所有元素都没有设置为任何特定的值,它们的内容在声明数组时是不确定的。
要去掉多余的数据,只需初始化你的数组。
未初始化意味着它包含该内存位置的任何内容。也就是说,它可以包含任何东西。
这就是为什么你总是应该初始化变量。
我认为如果数组元素没有显式初始化,可以是任何值,通常是已经在内存地址中的值。
换句话说,如果不初始化它们,它们等于存储在该内存位置中的。换句话说,垃圾。
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理