【问题标题】:Passing argument by reference [duplicate]通过引用传递参数[重复]
【发布时间】:2017-03-21 09:51:57
【问题描述】:

有一个数组:

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)
}

【问题讨论】:

  • int modify(int &amp;a ){ a = 10; }
  • 你没有数组。应该是int a[] = {1,2,3};

标签: c++ reference


【解决方案1】:

但是为什么我不能传递对 int 的引用来修改它?

你当然可以。

语法需要有所不同。

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

使用的区别

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 2014-03-17
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2010-10-07
    • 2011-07-31
    相关资源
    最近更新 更多