ITPub博客

首页 > 应用开发 > IT综合 > 【C++】为什么不能定义数组的引用,却可定义变量的引用

【C++】为什么不能定义数组的引用,却可定义变量的引用

IT综合 作者:风尘_NULL 时间:2017-07-26 12:59:35 0 删除 编辑
数组的引用的可以定义的,比如:
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<<sizeof(p)<<std::endl;
 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<<b[i]<<std::endl;
 }
 }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30221425/viewspace-2142581/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
腾讯科技(深圳)有限公司 DBA

注册时间:2015-04-24

  • 博文量
    76
  • 访问量
    238226