未分配数组上的数字

时间:2017-05-18 08:51:11

标签: c++

鉴于此代码:

#include <iostream>
using namespace std;
int main() {
    int examplearray[] = {1,2,3};
    for (int i = 0; i < 6; i++) {
        cout << examplearray[i] << "\t";
    }

    return 0;
}

我有以下输出:     1 2 3 3 4200928 6422336

我很确定这在某个地方得到了解答,但我一直在浏览谷歌一段时间,我无法找到解释。我没有为数组的第4和第5个位置定义一个值,我假设它的值为0或NULL。为什么他们有随机值?

当我尝试制作这样的代码时,我注意到了这一点:

for(int i = 0; examplearray[i] != 0; /* while it's not empty */i++){
    /* do something */
}

我该如何做我想对此代码做的事情?

2 个答案:

答案 0 :(得分:1)

如果您尝试访问数组索引超出范围,则CC++中的未定义行为。这意味着无法保证会发生什么。

答案 1 :(得分:1)

对于int examplearray[] = {1,2,3};,未明确指定数组的长度,然后根据初始化列表确定;结果是3。因此,尝试访问4-6个元素(根本不存在)是未定义的行为。

如果您认为数组的长度为6,则应编写int examplearray[6] = {1,2,3};。对于这种情况,其余元素将初始化为0