2016-11-07 98 views
-2

具有阵列传递参数:通过引用

int a = { 1 ,2 , 3} 

我可以以修改它传递一个指针的函数。

int modify(int *a){ 
    a[0] = 10; 
} 

但是为什么我不能传递一个int引用来修改它呢?例如

int modify(int &a){ 
    a[0] = 10; 
} 

编译器如何使用引用进行操作?通过使用指针,我们传递内存(在这种情况下,是数组的第一个元素)。但是参考文献会发生什么?例如,为什么这样工作?

vector<int > a 

void mod(vector<int> & a){ 
     a[0] = 10; 
    //a.push_back(10) 
} 
+1

'int modify(int&a){ a = 10; }' – nwp

+1

你没有数组。它应该是'int a [] = {1,2,3};' –

回答

0

但为什么不能我通过引用为int对其进行修改?

你当然可以。

语法需要有点不同。

int modify(int (&a)[3]){ 
    a[0] = 10; 
} 

使用

int modify(int *a){ ... } 

int modify(int (&a)[3]){ ... } 

之间的区别在于,可以调用使用不同大小的阵列中的第一个,而第二一次只能与阵列被称为大小3.