未分配阵列上的编号

Number on non-assigned array

本文关键字:编号 阵列 分配      更新时间:2023-10-16

给定此代码:

#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

我很确定这在某个地方得到了回答,但是我已经浏览了一段时间的Google,但我找不到对此的解释。我还没有为数组的第 4 和第 5 个位置定义一个值,我假设它的值将是 0 或 NULL .为什么它们有随机值?

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

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

我怎样才能在这个代码上做我想做的事情?

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

如果你假设数组的长度是6你应该写int examplearray[6] = {1,2,3};。在这种情况下,其余元素将被初始化为 0

如果您尝试越界访问数组索引,则它是CC++未定义的行为。这意味着无法保证会发生什么。