C++ 数组问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 21:06:46
int a[2][3][1] = {0,1,2,3,4,5};
cout<<a[1][0][2]<<endl;
输出结果是什么?
是不是应该越界?
可是结果是5

**************************
VC++ 6.0 的运行结果是 5 !!!!!!!
**************************

越界了,你看看这段申明(我举个二维的)
a[3][2] = { 1,2,3,4,5,6,};
a[3][2] = { {1,2,},{3,4},{5,6}};
上面的申明及初始化是等价的,值为
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
a[1][1] = 4;
a[2][0] = 5;
a[2][1] = 6;

下面再来看看这段申明
a[3][2] = { 1,2,3,4};
a[3][2] = { {1,2,},{},{3,4}};
上面的申明及初始化不是等价的,值为
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
a[1][1] = 4;
a[2][0] = ?;
a[2][1] = ?;

a[0][0] = 1;
a[0][1] = 2;
a[1][0] = ?;
a[1][1] = ?;
a[2][0] = 3;
a[2][1] = 4;

并且每个下标的值不可以大于它的长度。。。

a[1][0][2]最后一个取2显然越界了

越界了
输出的是随机数字

那为什么会输出5啊?