Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在我的实际参数中通过引用传递数组_C++_Arrays_Pass By Reference - Fatal编程技术网

C++ 如何在我的实际参数中通过引用传递数组

C++ 如何在我的实际参数中通过引用传递数组,c++,arrays,pass-by-reference,C++,Arrays,Pass By Reference,当我试图使用int(&a)[5]通过引用传递数组时,遇到了一个错误。 但是当我想要实现它时,我们应该传递一个引用,我初始化为 int&refere=*a; 下面是我的代码,以及向调用函数传递引用和指针的两种方法。如何解释我不能简单地将引用传递给它 #include <iostream> using namespace std; void add(int (&)[5],int ); int main() { int a[5]={5,4,3,2,1}; int len

当我试图使用int(&a)[5]通过引用传递数组时,遇到了一个错误。 但是当我想要实现它时,我们应该传递一个引用,我初始化为 int&refere=*a; 下面是我的代码,以及向调用函数传递引用和指针的两种方法。如何解释我不能简单地将引用传递给它

 #include <iostream>

using namespace std;

void add(int (&)[5],int );
int main()
 {


int a[5]={5,4,3,2,1};
int len=sizeof(a)/sizeof(a[0]);
cout<<"len="<<len<<endl;
cout<<"a="<<a<<endl;// the name of array is actually the pointer

int& refer=*a;

add(a,len);    //which is correct,we pass a pointer to the calling function;
add(refer,len);   //which is wrong,we pass a reference to the calling function;
for(int i=0;i<len;i++){
    cout<<a[i]<<" ";
}

return 0;
}



void add(int (&a)[5],int len){
  for(int i=0;i<len;i++){
   a[i]=a[i]+10;
  }
}
#包括
使用名称空间std;
无效添加(整数(&)[5],整数);
int main()
{
int a[5]={5,4,3,2,1};
int len=sizeof(a)/sizeof(a[0]);
库特
这不是对数组的引用,而是对其第一个元素的引用。请尝试:

int (&refer)[5] = a;
add(refer,len);

如果加法只取一个大小为5的数组,为什么要传递长度?你只需要在代码中输入一个数组,以便在函数中修改一个数组。在C++中,你可以使用<代码> STD::vector和< /Cord>,并利用向量知道它的大小的事实。因为我想知道我应该循环多少次。衰减到指向第一个元素的指针。从这个意义上说,我将丢失有关此数组大小的信息,这意味着我应该将数组的长度加在一起。@user3570984:使用此签名,
a
不会衰减到指针,因此您知道大小(并且可能会删除
int len
).但是大小就在函数签名中!至于int(&reference)[5]=a;我不太明白为什么可以将指针(如a)分配给引用。@user3570984:因为
a
不是指针。它是一个数组。表达式
a
在某些上下文中衰减为指针,基本上是在需要指针的地方。还要注意,这不是分配。它是初始化,尽管用=
符号。@user3570984对数组(或指针)的引用方式与对整数的引用方式几乎相同。行
int(&reference)[5]=a;
表示“
reference
是对
a
的引用”。
int (&refer)[5] = a;
add(refer,len);