这可能是一个无聊的问题!谢谢!
这是代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int a[5] = {0};
int b[5];
cout << a << endl;
cout << b << endl;
for (int i = 0; i < 5; i++)
{
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i < 5; i++)
{
cout << b[i] << " ";
}
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 中:g++ a.cpp
在带有 DEV C++、MinGW GCC 4.7.2 的 Windows 中:

所以问题集中在数组b上:
我知道我还没有初始化数组 b。
数组 b 充满了垃圾值,但为什么总是有 '0' 和固定位置,如“X 0 X 0 X”??
里面会发生什么??只是保护机制?
那是未定义的行为。不能保证,如果这些零在那里,那只是偶然地是真的。
解释是,由于某些随机原因,在内存中的这些位置存储了一个 0,然后再用于您的目的。由于您在堆栈上分配数组,因此这些零可能来自先前的函数调用,并且可能是一些填充。编译器会随心所欲地这样做。
| 归档时间: |
|
| 查看次数: |
5555 次 |
| 最近记录: |