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