数组的引用的可以定义的,比如:
int a[10];
int(&ra)[10]=a;
或者:
int* const& ra=a;
//数组是个地址,那么先定义一个int地址的引用int*& ,数组名有const特性,所以引用也要是个const,于是用const修饰& 就有int* const& ra=a;
这个实际上是个指针的引用,和int(&ra)[10]=a;还是有区别的。 int(&ra)[10]=a;这是个真正的数组的引用,用sizeof(ra)可以看出区别.
但不能定义引用数组,就是所有元素都是引用的数组:
int& ra[10]; //这个是不行的 ,定义数组时要分配空间,而引用是不占用内存空间的,所以c++规定不可以定义引用数组
//数组引用传递例子如下: bool array_assign(int (&p)[3],int (&q)[3]){
//std::cout<
if(sizeof(p)!=sizeof(q)){
std::cout<<"The subscript values do not match@!!!"<<std::endl;
return false;
}
for(size_t i=0;i<sizeof(q)/sizeof(q[0]);i++){
p[i]=q[i];
}
return true;
}
int main()
{
int a[3]={2,8,16};
int b[3];
bool rest;
rest=array_assign(b,a);
if(rest){
for(size_t i=0;i<3;i++){
std::cout<std::endl;
}
}
}