通过引用传递参数

时间:2016-11-07 22:12:09

标签: c++ reference

有一个数组:

int a = { 1 ,2 , 3}

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

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

但是为什么我不能通过对int的引用来修改它呢? e.g

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

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

vector<int > a 

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

1 个答案:

答案 0 :(得分:0)

  

但为什么我不能通过引用来修改它?

你确定可以。

语法需要有点不同。

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

使用

之间的区别
int modify( int *a ){ ... }

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

是你可以使用不同大小的数组调用第一个,而第二个只能使用大小为3的数组调用。