有一个数组:
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)
}
答案 0 :(得分:0)
但为什么我不能通过引用来修改它?
你确定可以。
语法需要有点不同。
int modify( int (&a)[3] ){
a[0] = 10;
}
使用
之间的区别int modify( int *a ){ ... }
和
int modify( int (&a)[3] ){ ... }
是你可以使用不同大小的数组调用第一个,而第二个只能使用大小为3的数组调用。