#include<vector>
using namespace std;
struct x{
vector<int> y;
};
void magic(struct x& d)
{
d.y[0] = 5;
}
int main() {
struct x d;
d.y = {1,2,3};
struct x* z = &d;
magic(*z);
cout<<z->y[0];
return 0;
}
这段代码是否有效,如何有效?我们能否把*z传给一个需要c++引用的函数。
指针 z
指向 d
.
struct x* z = &d;
衍生引用指针,你可以得到对象d的l值,这个对象通过引用传递给函数的参数。
magic(*z);
所以没有什么魔力。
其实这两个电话
magic( *z );
和
magic( d );
是等价的。唯一的区别是在第一个调用中使用了更复杂的表达式。