菜鸟联盟:奇怪的数组
请看下面这段C++程序:
#include <iostream.h>
int main()
{
int a[] = {1, 3, 5, 7, 9};
int i;
cin >> i;
int& ref = a[i];
ref = 55;
cout << a[i] << endl;
return 0;
}
其实这只是张国锋的C++教材中说明'引用'的功能的一个简单例子.但是,在 Borland C++ 3.1 上运行时,我发现其中不管变量 i 输入什么合法值,程序都正确得出结果.(当然, i 的输入值必须在其类型所规定的范围内,也要符合数组下标的规定,比如这里的 i 的合法值为 0 - 65534).
照我想,虽然定义数组 a 的时候没有指明大小,但是由于对其赋了初值 {1,3,5,7,9},所以应该还是等于确定了数组的大小。各种C++教材上都没有对这种不确定大小的数组定义讲的很清楚,而其中有一本书上说,不指明大小的数组在定义的时候赋了初值,也就相当于确定了数组的大小。
实在是不明白这是怎么一回事。
又及:这可不是kingofark我出的题目!我也不知道答案的!希望菜鸟联盟的各位能想一想,更希望有高手做一回我们菜鸟联盟的嘉宾,给我们解解惑!谢谢!