當我嘗試使用int傳遞數組引用時遇到錯誤(& a)[5]。 但是當我想實現它時,我們應該通過一個參考,我初始化爲 int & refer = * 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;
}
}
如果添加只需要一個大小爲5的數組,爲什麼你通過長度?你只需要'int a []'傳遞一個數組來修改函數。在C++中,你可以使用'std :: vector&'並利用向量知道其大小的事實。 –
2014-10-02 01:53:10
因爲我想知道我應該循環多少次。當我將一個[]傳遞給一個調用函數時,一個[]將衰減到指向第一個元素的指針。在這個意義上,我會失去有關這個數組大小的信息,這意味着我應該將我的數組的長度加起來。 – user3570984 2014-10-02 02:01:40
@ user3570984:有了這個簽名,'a'不會衰減到指針,所以你知道它的大小(並且可能會移除int len)。 – Jarod42 2014-10-02 07:14:44