鉴于此代码:
#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 */
}
我该如何做我想对此代码做的事情?
答案 0 :(得分:1)
如果您尝试访问数组索引超出范围,则C
和C++
中的未定义行为。这意味着无法保证会发生什么。
答案 1 :(得分:1)
对于int examplearray[] = {1,2,3};
,未明确指定数组的长度,然后根据初始化列表确定;结果是3
。因此,尝试访问4-6个元素(根本不存在)是未定义的行为。
如果您认为数组的长度为6
,则应编写int examplearray[6] = {1,2,3};
。对于这种情况,其余元素将初始化为0
。