关于c++中数组引用的有关问题, 请

关于c++中数组引用的问题, 请高手指点
int a[3] = {1, 2, 3};
请教&a[3]是什么意思! 这个表达式的结果会是什么(我已经做过测试&a[3]不是对a[3]进行取址操作)???

------解决方案--------------------
数组一共3个数,哪里来的a[3]?越界访问了。
另外&a[2]就是取a【2】的地址。
函数参数中的&是引用的意思比如:
void Test(int &k);
k是引用
------解决方案--------------------
&a[3]不是对a[3]取地址? 不知道lz用了什么测试来证明...

顺便提一下,a[3]已经越界了...
------解决方案--------------------
当然不是,因为没有a[3]
------解决方案--------------------
c 数组下标 从 0 开始
 int a[3]; 3个元素分别是 a[0] a[1] a[2]
------解决方案--------------------
&a[3]是取地址操作,只不过是越界操作而已。
要是引用的话,要有左值
如 int &a = &a[3];
------解决方案--------------------
&a[3]就是数组最后一个元素后面的地址吗?正好相差一个int吧
------解决方案--------------------
我也做了下测试,&a[3]是a[2]后面的一个地址
------解决方案--------------------
&a[3]是取地址,可以看成这样(&a+3),由于a是数组,+3是加的数组占的字节数,在这为4*3为12.(和a+3是不同的)。
在这你要是&a[2]就不同了。因为2在范围内,就是取a【2】的地址。
int a[4] = {1, 2, 3};
int k = (int)&a[4];
int t = k - (int)a; //结果为16.
------解决方案--------------------
越界!!
------解决方案--------------------
是取地址的操作, 这是高手写出来的精致代码.

如果你同时定义了两个连续的变量, 如下:

int a[3] = {1, 2, 3}; 
int b[100];

那么&a[3]的结果就是下一个变量的地址也就是b的地址.

以上代码可适用在全局变量定义和函数内的变量定义.
------解决方案--------------------
数组越界了,数组下标是从0开始而不是从1开始的哟

以后注意下就好了
小问题
------解决方案--------------------
再重复一遍,数组的引用应该这样写:
C/C++ code
int a[10];//数组a
int (&b)[10]=a;//b是a的引用

------解决方案--------------------
都越界了。。。
------解决方案--------------------
请看如下程序及其注解:

int main()
{
int a[3] = {1, 2, 3}; 
//数级的引用:
int (&_rAry)[3] = a;//正确的数组引用声明语法!
cout << _rAry[2] << endl;

_PAUSE;
}

楼组的'&a[3];'的确不是数组的引用语法,而是数组a的下标3的地址(当然,对于数组a,a[3]显然是下标越界!)

修改上述程序,可以证明如上论述:

int main()
{
int a[4] = {1, 2, 3,4};//确保a[3]不下标越界! 

int (&_rAry)[4] = a;//声明a的数组引用;
cout << _rAry[2] << endl;//使用引用,Ok!

int* _p = &a[3];//演示楼主的'&a[3]'是地址提取,获取到a[3]的地址!
cout << *_p << endl;//指针解引用成功,证明上述论述!

_PAUSE;
}